2012-07-08 169 views
2

儘管進行了大量搜索,但我找不到在X509(v3)證書上設置自定義擴展名(CustomExtensions屬性)的任何示例。X509自定義擴展 - 您如何設置它們?

如果我想生成一個新的證書(基於已經安裝在機器上的現有CA證書),我該如何添加自定義擴展?我期待在證書中攜帶一些額外的自定義信息供以後檢查。這可以通過編程或使用makecert來完成嗎?或者只能通過編寫在生成證書時調用的custom policy module來設置這些擴展?這甚至可以通過使用.Net框架中的常規X509CertificateX509Certificate2類來實現?

我發現檢查自定義擴展的代碼,但沒有設置它。

+0

[tag:custom-extensions]有點... * generic *。你能找到更好的東西嗎? – Charles 2012-07-08 04:48:58

+0

請注意,當它變爲符合條件時,我將在此提供至少200條賞金。如果他們回答這個問題,並且你可以展示一個工作樣本,歡迎圖書館等人的建議。 – slugster 2012-07-08 04:50:02

+0

@Charles - 完成。這是一個新的標籤,現在我已經細化了一下。 – slugster 2012-07-08 04:52:24

回答

1

無論您現有的證書是什麼,它都通過簽名「密封」。更改其內容會使簽名失效,從而導致證書失效。這就是爲什麼你無法找到你想要做什麼的任何信息。

當您通過MMC中的證書管理管理單元或在Internet Explolrer中瀏覽證書查看證書時,可能會使您感到困惑的是證書的自定義屬性。這些屬性不會存儲在證書中 - 它們分別由CryptoAPI保存,而不是「嵌入」證書。

對於您擁有私鑰的自簽名證書,您可以重新創建證書並添加自定義擴展名,但這種情況很少見。我不確定.NET Framework允許您使用自定義擴展名,但我們的SecureBlackbox可以。

+0

我期待在生成的時刻在證書中嵌入一些客戶特定的信息(在此之後它不會被更改,它的目的是可以檢查信息當證書被使用/呈現時) - 但我還沒有找到明確的指示如何做到這一點。它只能通過證書模板完成嗎?在創建證書之前可以生成或修改該模板嗎? – slugster 2012-07-08 06:48:22

+0

@slugster也許我在「生成新證書(基於機器上已安裝的現有證書)」部分誤解了您的問題。我不知道如何使用.NET類自定義擴展生成證書,以及是否真的有可能。 – 2012-07-08 12:31:11