我想知道是否可以使用智能卡的私钥对数据进行签名,而无需借助 java applet 或 activex 控件。
我非常接近!
我们的环境是:
- 广告域
- PKI 基础设施/智能卡 (PIV)
我敲开了一个简单的 ASP.NET (.net 4.0) 网络表单应用程序:
- Windows 身份验证开启,匿名关闭
- 身份模拟
使用读卡器中的智能卡,我可以轻松枚举登录用户智能卡 (StoreLocation.CurrentUser) 上的证书。但是,当我尝试访问私钥(通过 CSP)时,我收到“拒绝访问”错误。
在调试模式下的本地机器上一切正常。我知道——这是陈词滥调。
protected void Page_Load(object sender, EventArgs e)
{
//always populate the cert store
store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.MaxAllowed);
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
//hardcoded to get the first cert in the store - it's legit and had a private key
cert = store.Certificates[0];
//throws error when not local
csp = (RSACryptoServiceProvider)cert.PrivateKey;
}
我尝试让应用程序池身份访问证书存储区无济于事。