2014-10-08 64 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