Dot-Net

x509 C# 範例?

  • January 9, 2011

我一直在逐篇閱讀有關 x509 證書創建、簽名等的文章,但我還沒有找到解決我的問題的方法——想知道是否有人能指出我正確的方向,因為我現在完全糊塗了. 這是我正在嘗試做的事情:

對於客戶端應用程序:

  1. 生成公鑰/私鑰對
  2. 將密鑰作為字節抓取$$ $$並將它們儲存在文件系統上。
  3. 生成 x509 證書
  4. 生成簽名請求

對於伺服器應用程序:

  1. 生成公鑰/私鑰對
  2. 將密鑰作為字節抓取$$ $$並將它們儲存在文件系統上。
  3. 創建自簽名 X509 證書
  4. 簽署客戶證書
  5. 驗證客戶端證書是否由上面 #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()方法。

這些一起應該足以讓你解決你的問題。

引用自:https://stackoverflow.com/questions/4637543