使用 C# 从 PKI 智能卡读取证书

Posted

技术标签:

【中文标题】使用 C# 从 PKI 智能卡读取证书【英文标题】:Read certificates from PKI smart card with C# 【发布时间】:2016-04-20 09:19:45 【问题描述】:

我尝试使用 C# 从我的 PKI 智能卡中读取证书。 我读到当我将智能卡插入读卡器时,证书会从智能卡复制到计算机上的证书存储中。

但是,当我检查证书存储区不同区域(My、AuthRoot、Root、...)中的证书数量时,我得到相同的数量,它确实 不管智能卡是否插入。

这是我检查商店中证书数量的方法:

var myStore = new X509Store(StoreName.AuthRoot, StoreLocation.CurrentUser);
myStore.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
var count = myStore.Certificates.Count;

那么如何访问智能卡上的证书来验证私钥?

感谢和亲切的问候 弗里德海姆·德雷克特拉

【问题讨论】:

【参考方案1】:

这取决于卡片类型。在本地卡(具有文件系统的卡)上,每个证书都简单地存储在一个文件中,并且可以使用标准命令读取,很可能是 READ BINARY。要找出文件 ID,您通常必须查看支持信息,例如您的卡提供的 PKCS-11 或 PKCS-15/ISO 7816-15 目录文件。如果有多个证书,您必须为此目的解析(通常也在文件中)。

【讨论】:

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

智能网联-浅谈基于PKI的车联网应用服务安全

如何在 C# 中从智能卡中读取名称和地址等基本数据?

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

使用 Javascript 读取智能卡证书

读取智能卡上的证书

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