2016-03-01 29 views
3

我想在使用SignTool.exe的項目生成期間簽署我的程序集和設置文件。在this answer之後,我想使用/sha1選項,因此我不需要指定證書密碼。但是,當我這樣做時,我收到「無效的SHA1哈希格式」錯誤。我已經嘗試從MSBuild Exec任務,從Visual Studio開發人員命令提示符和批處理文件都具有相同的錯誤。從msbuild或命令行調用signtool時出現「無效的SHA1哈希格式」錯誤

我嘗試的命令是(很明顯,不同的密鑰):

signtool.exe sign /a /sha1 ‎1234567890abcdef1234567890abcdef12345678 /tr http://timestamp.comodoca.com /td SHA256 /v Setup.msi 

我覺得我的證書已正確安裝和SHA1關鍵是正確的,因爲它與SignFile MSBuild task正常工作。我只是使用它,但我也需要能夠簽署我的安裝程序文件,這些文件不是用MSBuild構建的,因此需要從批處理腳本進行簽名。

那麼可能是什麼問題,我該如何解決?

+0

*它們不是用MSBuild構建的,因此需要從批處理腳本中籤名*或者使批處理腳本調用msbuild來簽署這些文件。 – stijn

+0

謝謝@stijn。我確實考慮過這樣做,但我想知道哪裏出了問題。事實證明,這是我的一個愚蠢的錯誤......這是我非常期待的。 – kjbartel

回答

2

愚蠢的錯誤,我不能相信花了這麼長時間才意識到。我在指紋字符串之前有一個額外的空格字符,這是導致錯誤的原因。

即使修復,雖然我當時有另外一個錯誤後:

No certificates were found that met all the given criteria.

/debug選項再次運行該命令列出的所有證書,它試圖使用和

After Hash filter, 0 certs were left.

散列SHA1我想要使​​用的證書的散列與我指定的散列完全相同,唯一的例外是散列全是大寫字母。所以再次嘗試使用散列中的所有大寫字母的命令,...它的工作。

由於我沒有看到這個需求記錄在任何地方,所以我想我會在這裏提供答案。

6

我有同樣的問題,並發現可能有一個隱藏的UNICODE字符導致此錯誤。只需將文本複製到新的記事本實例並返回即可使用。 替代地,將光標放置在以下位置:

/sha1 <cursor>abcdefg 

然後按BACKSPACE。如果您必須按兩次BACKSPACE才能使光標位於「/ sha1」指令旁邊,則會出現不可見的字符。然後只需輸入空格,就完成了。

+1

在我的情況下,我也必須刪除相反方向的字符。 – Xyon