Python 中的 CAC 客户端应用程序身份验证
我正在构建一个 python 应用程序来从网站提取数据。应用程序必须使用 CAC 卡和 PIN 进行身份验证 (HTTPS/SSL) 才能发出请求。
我的假设是否正确,即您无法从 CAC 卡检索私钥,因此我只能使用像 PyKCS?
有什么建议或资源可以解决这个问题吗?
I am building a python application to pull data from a website. The application has to authenticate(HTTPS/SSL) with a CAC card and pin in order to make requests.
Am I correct in my assumptions that you can't retrieve the private key from a CAC card, and am therefore stuck using a PKCS #11 Wrapper like PyKCS?
Any tips or resources for going about this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
身份验证和签名密钥通常在卡上生成并且不可提取,这与可以/应该托管在某处的加密密钥不同。
请参阅需要使用 M2Crypto.Engine 访问 USB 令牌的帮助 以 M2Crypto 为例,说明如何通过 PKCS#11 使用智能卡在 Python 中访问网站。
Authentication and signature keys are usually generated on the card and are not extractable, unlike encryption keys which can/should be escrowed somewhere.
See Need help using M2Crypto.Engine to access USB Token for an example with M2Crypto that explains how to use a smart card via PKCS#11 for website access in python.
你是对的。这就是智能卡保护私钥安全的全部目的。如果您的应用程序在 Windows 中运行,您可以尝试使用 WININET.DLL 进行连接,安装正确的中间件后,它应该自动处理对启用 CAC 的站点的身份验证。
You are correct. That's the whole purpose of the smart card to keep the private keys safe. If your application is running in Windows you can try using WININET.DLL for your connectivity, with the correct middleware installed it should handle authentication to the CAC enabled site automatically.
我会尝试找出 ECA 证书是否是合适的替代品。例如,有些网站接受 CAC 和 ECA 证书。有关更多信息:http://iase.disa.mil/pki/eca/certificate。 html
I would attempt to find out if an ECA cert is a suitable substitute. For example, there sites that accept CAC and ECA certs. For more info: http://iase.disa.mil/pki/eca/certificate.html