我正在通过 Windows 证书存储从 c# 访问智能卡。这适用于许多系统。然而,在一个系统上,它没有。智能卡证书不会添加到个人证书中。
我们需要它在证书存储中才能从 C# 访问它,如下所示:
X509Store store = new X509Store(StoreName.My,
StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs =
store.Certificates.Find(X509FindType.FindByIssuerName,
issuerName, false);
系统详情:
- 操作系统:Windows Server 2003 R2 x64 SP2
- 使用的 CSP 是SafeSign Identity Client v3.0.11。
- 该系统通过 Citrix ICA 连接、Citrix Presentation Server 4.5 访问。
什么有效:
- 通过智能卡读卡器( OMNIKEY 3121)提供的诊断工具访问卡
- 在 Internet Explorer 7 中查看个人证书(工具 > Internet 选项 > 内容 > 证书
- 基本上我们用这张卡尝试过的所有其他事情,除了......
什么不起作用:
- 个人证书不会复制到个人证书存储区(可以使用 certmgr.msc 检查)
我的猜测是通过 Citrix 转发智能卡可以正常工作,因为我们几乎可以通过所有方式访问它,但 CSP 无法正常工作。然而,获得对 CSP 的支持并不容易,因此提出了这个问题。我觉得奇怪的是证书可以通过 IE7 访问,这表明它们在某种 Windows 商店中可用。
欢迎任何关于在哪里进一步研究的想法。是否有像 IE 一样访问智能卡证书的不同方式?