C# 中的智能卡证书
如何确保我从智能卡访问证书而不是在 C# 中形成我的个人证书存储? 以及如何让我的 RSACryptoProvider 使用我的智能卡证书私钥?
谢谢沃利
How can I ensure to I am accesing the Certificates from my SmartCard and not form my personal certificate store in c#?
and How can I make my RSACryptoProvider to utilize my smart card certificate private key?
thanks
Wally
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有时,特别是如果您没有在智能卡上使用默认密钥容器名称(Microsoft 推荐),证书不会复制到本地证书存储。 解决方案是使用 crypto api 通过 KP_CERTIFICATE 访问密钥,从检索到的数据构造证书,并为其分配一个使用您自己的密钥容器名称构造的新 RSACryptoServiceProvider。
伪 C# 代码如下:
Sometimes, especially if you are not using default key container name on the smart card (recommended by Microsoft), certificates are not copied to local certificate store. The solution is to use crypto api to access the key with KP_CERTIFICATE, construct certificate from the retrieved data, and assign it a new RSACryptoServiceProvider constructed using your own key container name.
The pseudo C# code follows:
您需要通过您的加密服务提供商 (CSP) 获取您的智能卡。 在 Windows(2000、XP 和 Vista)上,每当您将智能卡插入智能卡读卡器时,其上的所有证书都会传播到您的个人证书存储中。 您的私钥保留在您的智能卡上。 这意味着如果您使用证书(例如对电子邮件进行数字签名),系统会提示您插入智能卡。 如果您的智能卡需要 PIN 码,系统会要求您输入该密码。 原因是应用程序有一个位置可以查找用户证书,即您的个人证书存储,因此不必重写应用程序来处理智能卡上的证书。
You will need to go through your Cryptographic Service Provider (CSP) for your smartcard. On Windows (2000, XP, and Vista) any time you insert your smartcard into a smartcard reader all the certificates on it are propogated to your personal certificate store. Your private key stays on your smart card. What that means is if you use your certificate (for example to digitally sign an e-mail) then you are prompted to insert your smart card. If your smart card requires a PIN you will be asked to input it. The reason for this is that there is one location for applications to look for user certificates, your personal certificate store, so applications don't have to be rewritten just to handle certificates on smartcards.