如何通过 APDU 命令将 X509 证书存储在 SmartCard 中

Posted

技术标签:

【中文标题】如何通过 APDU 命令将 X509 证书存储在 SmartCard 中【英文标题】:How could store X509 certificate in SmartCard by APDU command 【发布时间】:2019-10-28 14:02:23 【问题描述】:

我希望通过 APDU 在 VirtualSmartCard 上编写 Windows 登录证书。我已经找到命令结构How to send a command APDU to a HCE device? 也阅读了有关 APDU (https://cardwerk.com/smart-card-standard-iso7816-4-section-6-basic-interindustry-commands/) 的文档,但找不到 X.509 证书的任何特定命令。

【问题讨论】:

【参考方案1】:

但找不到 X.509 证书的任何特定命令。

没错。但这只是因为智能卡的证书只是数据。证书的验证等是在主机上进行的,而不是在智能卡上。所以通常它存储在一个文件中(ISO 7816-4 术语中的 EF)。如果需要找到该文件,可以通过在卡上放置一个 PKCS#15 兼容的文件结构来引用它。

【讨论】:

感谢您的回复。但我想通过虚拟 SC 读卡器和虚拟卡模拟物理智能卡来登录 Windows。我已经使用 APDU 命令创建了虚拟卡,但是 windows 显示找不到有意义的证书。所以寻找在 ISO=7816 卡上存储或链接 X509 证书的解决方案。 仿真没有什么不同,您需要使用 PKCS#15 并且(可能)确保 Windows 能够识别 ATR。 当我使用 PKCS#15 时出现此错误:Using reader with a card: Fabio Ottavi Pipe Reader 0 Failed to connect to card: Card is invalid or cannot be processed 我无法帮助您从这里调试,但似乎卡上的结构仍然不正确。这并不意味着 PKCS#15 不是解决方案。这些技术不是你一天就能完全理解的,而且很容易犯错误。 是的,我同意你的看法。而且我确信 PKCS#15 是我的解决方案。但不知道如何修复我的卡的结构。感谢您是否可以分享任何可以帮助我的链接或示例?

以上是关于如何通过 APDU 命令将 X509 证书存储在 SmartCard 中的主要内容,如果未能解决你的问题,请参考以下文章

通过签署 CSR 创建 x509 v3 用户证书

通过 CLI 针对 Java 证书存储验证证书

如何配置 WCF 以通过 Internet 使用 x509 证书?

如何验证 x509 证书的签名?

如何从 X509Store 加载受密码保护的证书?

C# 如何验证 Root-CA-Cert 证书 (x509) 链?