读取智能卡上的证书

Posted

技术标签:

【中文标题】读取智能卡上的证书【英文标题】:Read certificates on Smartcard 【发布时间】:2014-08-26 09:33:37 【问题描述】:

我想使用 .NET Api 来获取 SmartCard 上的证书列表。我知道智能卡上的证书已加载到个人存储中。但是,我想编写一个在用户登录之前运行的程序(我在 Windows 登录屏幕上添加了按钮来打开我的程序)。由于用户未登录,智能卡上的证书不会加载到个人存储中。这就是为什么我不能在这个问题How to read credentials from a SmartCard in c# 中使用解决方案。我需要编写代码以从 SmartCard 获取所有证书,而无需从 Personal store 获取它们。

谁能帮我解决这个问题?

非常感谢! 海。

【问题讨论】:

【参考方案1】:

经过大量研究,我找到了解决方案here。

【讨论】:

谢谢!!这正是我想要的!【参考方案2】:

首先,您可以在某个用户的凭据下运行服务(您通常在运行该服务的每个系统的 MMC 中的服务参数中指定凭据),然后将证书从智能卡映射到 Windows 证书存储取决于在驱动程序上。 IE。您需要验证此方案是否适用于您的智能卡读卡器。

接下来,如果您的智能卡读卡器支持 PKCS#11 接口(即供应商已提供 PKCS#11 驱动程序 DLL),那么您可以通过 PKCS#11 API 访问智能卡内容。

PKCS11 API 是一组非托管 DLL 函数,可以通过 P/Invoke 或通过某些第三方库从 C# 使用。

【讨论】:

嗨,尤金,感谢您的回复。我尝试使用 SecureBlackbox。下面是我的代码: TElPKCS11CertStorage certStorage = new TElPKCS11CertStorage(); certStorage.DLLName = "???"; certStorage.Open();我有一个 Gemalto .NET IDPrime 智能卡。我不知道 DLLName 是什么。你能帮我解决这个问题吗?贵公司是否提供技术支持?谢谢。 @haitranba 您必须知道从读卡器和/或卡的供应商处获取的 DLL 名称。这就是 PKCS#11 的工作原理。是的,如eldos.com/support 所述提供支持 不确定是否有用,但您可以将智能卡插入读卡器并打开命令提示符并运行以下命令:certutil -scinfo

以上是关于读取智能卡上的证书的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 读取智能卡证书

使用 pkcs#11 从智能卡读取文本文件

Cordova InAppBrowser 访问虚拟智能卡上的证书

在当前阅读器上的智能卡上查找证书

智能卡从 CA 证书中检索公钥

使用智能卡证书和公钥的网站认证