x509 C# 範例?
我一直在逐篇閱讀有關 x509 證書創建、簽名等的文章,但我還沒有找到解決我的問題的方法——想知道是否有人能指出我正確的方向,因為我現在完全糊塗了. 這是我正在嘗試做的事情:
對於客戶端應用程序:
- 生成公鑰/私鑰對
- 將密鑰作為字節抓取$$ $$並將它們儲存在文件系統上。
- 生成 x509 證書
- 生成簽名請求
對於伺服器應用程序:
- 生成公鑰/私鑰對
- 將密鑰作為字節抓取$$ $$並將它們儲存在文件系統上。
- 創建自簽名 X509 證書
- 簽署客戶證書
- 驗證客戶端證書是否由上面 #3 中的自簽名證書籤名。
我需要在 .Net 中以程式方式完成所有這些操作,並且不需要像 makecert.exe 或 openssl.exe 這樣的外部 .exe - 我需要使用程序內庫等。
我使用各種庫(如 Bouncy Castle、.Net Crypto、openssl 等)進行了一些零碎的工作 - 但我總是遇到障礙,要麼缺乏文件,要麼無法以字節形式獲取密鑰對
$$ $$所以我可以堅持它們,等等。要麼我讓這比現在更難,要麼那裡嚴重缺乏文件——或者兩者兼而有之。 我認為之前必須有人這樣做過,我非常感謝一些幫助 - 我願意接受任何和所有建議 - 謝謝!
.. 並且 PKIBlackbox 不是一種選擇——它的成本太高了 :(
您可以使用Bouncycastle C# 庫。文件不好,但我相信使用起來並不太難。您可以先訪問Javadocs以獲取該庫的 java 版本;java 和 C# 版本非常相似。其次,看原始碼,因為它比較容易閱讀。
你想要的課程是
Org.BouncyCastle.X509.X509V3CertificateGenerator. 網上有一些 java 範例,您可以將其用作創建 C# 版本的指南。這是一個簡單直接的。最後,Bouncycastle 有一個非常有用的類
Org.BouncyCastle.Security.DotNetUtilities,它有助於在 Bouncycastle 對象和 .NET 對象之間進行映射。一對這樣的方法是ToX509Certificate()和FromX509Certificate()。另外,請注意 .NET X509Certificate 類具有Import()和Export()方法。這些一起應該足以讓你解決你的問題。