我正在构建一个 python 应用程序来从网站中提取数据。应用程序必须使用 CAC 卡和 pin 进行身份验证(HTTPS/SSL)才能发出请求。
我的假设是否正确,即您无法从 CAC 卡中检索私钥,因此无法使用 PKCS #11 Wrapper(如PyKCS)?
有什么提示或资源可以解决这个问题吗?
身份验证和签名密钥通常在卡上生成并且不可提取,这与可以/应该在某处托管的加密密钥不同。
有关使用 M2Crypto 的示例,请参阅需要使用 M2Crypto.Engine 访问 USB 令牌的帮助,该示例解释了如何通过 PKCS#11 使用智能卡在 python 中访问网站。
你是对的。这就是智能卡保护私钥安全的全部目的。如果您的应用程序在 Windows 中运行,您可以尝试使用 WININET.DLL 进行连接,安装正确的中间件后,它应该会自动处理对启用 CAC 的站点的身份验证。
我会尝试找出 ECA 证书是否是合适的替代品。例如,有些网站接受 CAC 和 ECA 证书。欲了解更多信息:http: //iase.disa.mil/pki/eca/certificate.html