2009-07-24 84 views
0

在C#中我加載從像這樣初始化的的X509Store X509Certificate2對象:X509Certificate2:擴展丟失

 X509Store store = new X509Store("My", StoreLocation.LocalMachine); 
     store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly); 

我做了我的證書中OpenSSL和它被設置爲「任何目的」。所以我期望X509Certificate2.Extensions非空,並保持「服務器身份驗證」擴展名。但是,擴展總是一個空列表。有任何想法嗎?

回答

2

我會仔細檢查一個獨立源中的證書,只是爲了檢查你認爲的數據真的存在於那裏。我通常使用的基於Web的工具之一:

http://www.redkestrel.co.uk/cgi/decodeCert.pl

http://www.bogpeople.com/networking/CertDecoder/

兩個這樣的工具。

這樣你就知道它是測試數據還是使用X509庫。

接下來,我不確定您的意思是設置爲「任何目的」。我瀏覽了Open SSL文檔,並沒有看到您描述的設置。證書中有兩個擴展名用於定義密鑰的使用情況 - 密鑰使用情況和擴展密鑰使用情況。而對Open SSL命令和配置文件的描述並沒有顯示出一個你可以設置「any」的地方,並將所有這些打開。我想你想要的是在擴展密鑰用法擴展了「serverAuth」值:

http://www.openssl.org/docs/apps/x509v3_config.html#Extended_Key_Usage_

如果你願意張貼使用的具體OpenSSL的命令,並在證書生成的配置文件,我大概可以多一些幫助。

+0

感謝您的信息..我會考慮直接在我的OpenSSL東西中安置這些東西。 當我說它被設置爲「任何目的」時,我指的是Windows中的證書管理器MMC管理單元。如果您查看已安裝證書的證書屬性,請在「常規」選項卡中標記「已啓用此證書的所有用途」。但我想這或者意味着其他的東西,或者只是隨機的Microsoft竹節。 – evilfred 2009-08-10 18:41:24