2014-10-08 63 views
0

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

我发现这个例子.Net Programmatically Sign PKCS#10 Request with Bouncy Castle工作得很好,但它是必要的,直接访问一对钥匙是不可能的,因为智能卡不允许访问他们的私钥。

任何人都可以通过使用智能卡中的一对钥匙来帮助生成CSR吗?

问候

回答

5

BouncyCastle拥有目前没有内置任何种类的智能卡支持,但是它提供了Org.BouncyCastle.Pkcs.Pkcs10CertificationRequestDelaySigned类生成CSR可以由任何外部签署执行(即用私钥存储在智能卡上签名)。

这是从BouncyCastle的文档取Pkcs10CertificationRequestDelaySigned类的描述:

一种用于创建和验证认证PKCS10请求类别(这是 上Pkcs10CertificationRequest一个扩展名)。请求使用延迟签名进行 。这对于私钥 密钥位于另一个环境且不可直接访问的情况(例如HSM)很有用。 因此,第一步创建请求,然后在该对象之外完成签名 ,然后使用该签名完成 请求。

你可以看一下我的Net.Pkcs11Interop.PkiUtils.CertificateRequest类,它是一个完整的代码示例,它使用存储在智能卡上的私钥对CSR进行签名。该代码使用Pkcs11Interop库,我是作者,访问智能卡和存储在其上的私钥。

+1

哥们你是我的英雄:3 – Winter 2014-10-10 08:56:54