我正在尝试开发ASP.Net Web应用程序来接受智能卡身份验证。我已经创建了Web应用程序,并将它部署在IIS中。根证书安装在由CA授权的IIS计算机可信根目录中。对于该Web应用程序,我添加了服务器证书,设置了要求SSL并将其设置为接受证书。 当客户端访问该Web应用程序时,它会提示客户端证书,chrome会提示客户端证书,将智能卡插入客户端计算机,并且当PIN被询问时,用户输入有效的PIN码,并且我能够获得网络应用程序。直到这一切都按预期工作,但此时我想读取客户端证书并希望使用证书链验证该客户端。此外,基于客户端证书,我想获取该用户的角色。每次我尝试阅读客户端证书时,我都无法获得证书。下面是代码读取智能卡证书:我们可以在客户端服务器架构中使用智能卡身份验证吗?
`
X509Store store = null;
store = new X509Store(StoreName.Root);
store.Open(OpenFlags.ReadOnly);
var certsAuthEnc = store.Certificates.Find(X509FindType.FindByKeyUsage, (int)CertificateType.DigitalSignature, false);
`
这里,store.Certificates.Count
即将为0
请帮帮忙,我怎么能阅读客户端证书?
感谢您的帮助,为什么我指的是根位置,我的登录窗口位于服务器端,位于我的IIS服务器上,证书安装在根位置。 基本上,我所看到的是,在我的ASP .Net网络应用程序中,当PIN被验证时,我应该得到该数字签名数据以验证下一步如果用户在当前时间戳中有效等。 我怎样才能得到当用户输入PIN码时数字签名的数据? –
根存储只是一个自签名根证书列表,您认为“本地计算机”范围不是“根存储”。但是,正如我所说的,您不希望查看您希望验证客户端呈现的链的信任锚的列表。 – rmhrisk