2009-04-28 68 views
1

我們希望將自動軟件更新添加到我們的應用程序中,但我們公司尚未準備好從受信任的根CA中購買代碼簽名證書,因此我們將使用自簽名證書籤署代碼更新( .exe和.dll)。如何驗證使用自簽名證書籤署的二進制文件?

問題:如何使用Microsoft的Cryptography API驗證使用自簽名證書籤署的二進制文件,而無需安裝證書?要檢查的.cer文件將與應用程序捆綁在一起。或者使用通用的Crypto庫更簡單嗎?

回答

3

您可以跳過整個X509的事情,畢竟你並不真的需要它,如果你要使用自己的證書......

對於你想做什麼,你首先得生成您的RSA私鑰/公鑰對。然後您將公鑰存儲在您的應用程序中。

當你有一個更新,你在你的網站上簽名,通過獲得MD5或SHA-1或任何希望使用的散列;然後你用私鑰加密這個散列。安裝的應用程序獲取更新和簽名(加密哈希);當應用程序獲取二進制文件時,它會計算其哈希值,然後使用公鑰解密另一個並進行比較。如果它們是相同的,那麼它是一個有效的更新,否則你會拒絕它並警告用戶或其他東西。

對於自簽名的X509證書,機制將與此完全相同,但公鑰將包含一系列附加數據,例如發行者的身份,這些證書將與證書的身份相同。

0

我似乎回想起幾年前在Win2k的日子裏啓用自簽證書的一種方式,但它非常黑客,根本不適合公開部署,並且可能已被「固定」。如果你考慮使用其他加密庫或開發自己的加密庫,請注意:很難區分好的加密和不好的加密。