2010-11-07 99 views
4

我將如何簽署Visual C#可執行文件?創建密鑰並用signtool簽名可執行文件

SignTool.exe找不到證書。

我將如何創建自簽名密鑰和證書,並讓signtool能夠查看證書並使用它?

安裝了OpenSSL和Visual Studio 2010 Express。運行Windows 7旗艦版x64。

使用Windows Driver Kit中的SignTool.exe。

回答

9

使用自簽名證書對您的二進制文件進行數字簽名幾乎違背了帶有程序的concept of using digital certificates。基本的想法是證明代碼是由你創建的(真實性),並且自從發佈它(完整性)以來未被修改過。這必須通過使用由可信認證機構(CA)簽署的簽名證書來完成。

使用.Net,當二進制數字簽名時,它在驗證啓動期間的完整性和真實性時已驗證了automatically。雖然我沒有親自測試過,但使用自簽名證書可能會導致很多問題。

如果您想對您的程序進行數字簽名,您需要投資CA的代碼簽名證書。有一些公司可以提供這項服務(Verisign,Thawte),收費。

雖然費用在價格上似乎有點極端,但請記住,您不僅僅是購買數字證書,還要全天候驗證該證書。任何時候有人開始你的程序,它都會確保程序是由你寫的,並且程序自你發佈以來一直沒有改變。

一旦您擁有證書,您可以按照How to: Sign Application and Deployment Manifests中的步驟對您的程序進行數字簽名。

更新:如果此程序嚴格爲內部應用程序(僅限於您或您的企業),you can created your own CA。既然你會是唯一一個運行它,只有你需要驗證它。 CA證書需要在所有運行該程序的機器上安裝爲Trusted Root Certificate(或者如果您有權訪問Windows Server,則可以設置一個真實的CA)。

+1

是的,這是一個內部應用程序。感謝最後兩個鏈接。證書作爲受信任的根證書安裝。唯一的問題是SignTool.exe仍然會出現以下錯誤:「SignTool錯誤:找不到符合所有給定條件的證書。」謝謝回答。應該註冊。 – Kevin 2010-11-07 07:24:06

+0

爲什麼不使用內置方法來簽署可執行文件? C#編譯器能夠爲您在http://msdn.microsoft.com/en-US/library/che5h906%28v=VS.100%29.aspx中介紹的代碼簽名。 – jveazey 2010-11-07 07:26:48

+0

從來沒有見過。謝謝。與signtool合作生成一個測試證書。不幸的是,我已經將瀏覽器設置爲在退出時刪除cookie,並且我還沒有一個計算器帳戶。感謝您一直以來的幫助。 – Kevin 2010-11-07 07:36:18