我想知道是否可以使用智能卡的私钥, 而不诉诸Java applet或ActiveX控件对数据进行签名。
我功亏一篑!
我们的环境是:
- AD域
- PKI基础设施/智能卡(PIV)
我敲了一个简单的ASP.NET(.NET 4.0)的Web窗体应用程序有:
- 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;
}
我试着给应用程序池的身份访问证书存储无济于事。