2012-04-10 31 views
1

我想使用XMLDSIG來驗證.config文件沒有被篡改。我也希望能夠verify the signature chain,以便我可以信任簽名。我可以驗證.NET中的XMLDSIG簽名而不需要安裝根證書嗎?

我已經得到了鏈中的三個證:

Root CA -> Intermediate Signing CA -> Signing Key 

我檢查文件與由中間CA頒發的密鑰簽名

我想在沒有在用戶的Windows證書存儲中安裝任何證書的情況下執行此操作。這些是自簽名證書,因此並非每個用戶都希望我將它們安裝到他們的Root商店中。我在將它們安裝在我的根存儲中時沒有問題。

我有原始的.CER文件 - 它們包含在Signature塊中,我可以將它們包含在驗證碼中。我可以通過使用X509ChainPolicy.ExtraStore來建立證書鏈。

如果證書沒有安裝在根存儲中,並且我驗證了鏈,那麼X509Chain.Build返回false,並且鏈中有一個X509ChainStatusFlags.UntrustedRoot

我可以在此操作期間添加可信證書嗎?

+0

愚蠢的問題,但你有所有簽名證書的信任鏈中物理拷貝,對不對?他們只是沒有安裝,正確? – x0n 2012-04-10 15:15:54

+0

是的。我將它們複製到簽名塊中,但我也可以輕鬆地將它們包含在驗證碼中。我只是不想在每個用戶的機器上安裝一個根CA. – 2012-04-10 15:27:41

回答

0

假設您擁有信任鏈中所有簽名證書的公鑰的物理副本,那麼可以通過使用OpenSSL命令行工具來實現。

http://www.madboa.com/geek/openssl/#verify-standard

這是一個有點陡峭的學習曲線的在第一,但一個非常強大的工具。

如果您沒有簽名證書,那麼您無法驗證任何內容。這與試圖在沒有看到原始文件的情況下驗證人的簽名是一樣的。你沒有什麼可比較的,所以你如何驗證真實性?

更新

有東西在這裏也許可以幫助你:

http://social.msdn.microsoft.com/Forums/eu/clr/thread/1966a6e8-b6f4-44d1-9102-ec3a26426789

+0

擁有證書;必須在.NET代碼中完成。 – 2012-04-10 15:28:05

+0

更新了可能有所幫助的鏈接。 – x0n 2012-04-10 15:32:57

相關問題