如何使用存储在智能卡中的密钥生成CSR

本文关键字:密钥 CSR 何使用 存储 智能卡 | 更新日期: 2023-09-27 18:25:56

我目前正试图通过使用存储私钥和公钥的bouncycastle lib(java或C#)和智能卡(epass2003)来生成CSR。

我发现了这个例子。Net用Bouncy Castle对PKCS#10请求进行编程签名,效果很好,但有必要直接访问这对密钥,这是不可能的,因为智能卡不允许访问它们的私钥。

有人能通过使用智能卡上的这对密钥来帮助生成CSR吗?

向致以最诚挚的问候

如何使用存储在智能卡中的密钥生成CSR

BouncyCastle目前没有内置任何类型的智能卡支持,但它提供了Org.BouncyCastle.Pkcs.Pkcs10CertificationRequestDelaySigned类,该类生成可以通过任何外部签名实现进行签名的CSR(即使用存储在智能卡上的私钥)。

这是来自BouncyCastle文档的Pkcs10CertificationRequestDelaySigned类的描述:

用于创建和验证Pkcs10认证请求的类(此是Pkcs10CertificateRequest的扩展)。提出请求使用延迟签名。这对于私人密钥在另一个环境中,不能直接访问(例如HSM)。因此,第一步创建请求,然后完成签名在该对象外部,然后使用签名来完成要求

您可以查看我的Net.Pkcs11Interop.PkiUtils.CertificateRequest类,以获取使用存储在智能卡上的私钥签署CSR的完整代码示例。该代码使用Pkcs11Interop库(我是该库的作者)来访问智能卡及其上存储的私钥。