2015-06-03 94 views
8

我們剛剛從SHA-1切換到SHA-2代碼簽名證書。 (作爲背景信息,我們使用signtool.exe使用COMODO代碼簽名證書在Windows上籤署.exe和.xap文件。)我們使用經過認證的時間戳來執行此操作,以確保Windows在代碼簽名證書後始終信任代碼簽名到期。代碼簽名時是否/如何避免SHA-1簽名的時間戳?

現在我注意到時間戳證書仍然是一個SHA-1證書,當使用http://timestamp.comodoca.com/authenticode時。 (詳細信息:這是df946a5 ...與主題'CN = COMODO時間戳簽名者,O = COMODO CA有限公司,L =索爾福德,S =大曼徹斯特,C = GB'。)

(在Windows上可以看到該證書通過簽署.exe文件,然後在其資源管理器屬性對話框中轉到數字簽名選項卡,選擇簽名並單擊詳細信息,然後在數字簽名詳細信息對話框中單擊計數器簽名並單擊詳細信息,然後在第二個數字簽名詳細信息對話框中單擊查看證書。如果證書的「簽名哈希算法」爲「sha1」,證書是SHA-1證書。)

這會是一個問題嗎?換句話說,在我們當前的代碼簽名證書過期後,以及Microsoft Windows將SHA-1視爲破碎的算法(最遲在2020年)後,我們的當前簽名仍然會被信任?或者Windows會說:「時間戳在代碼簽名證書的有效範圍內,但時間戳是用SHA-1證書籤名的,所以我不會相信時間戳,因此我不會相信這個簽名」?

我們可以/應該使用另一項服務嗎? (不Verisign的http://timestamp.verisign.com/scripts/timstamp.dll,因爲它們也仍然使用SHA-1時間標記證書,即6543992 ......。)

+0

試過問科莫多支持嗎? – MrTux

+0

調用SignTool.exe時添加/ td SHA256標誌,如下所述。這適用於Comodo時間戳服務器。 –

回答

1

更新:看起來你真行,直到1/1/2017

可能,但是要感謝this文章,我發現瞭如何獲取SHA-256時間戳證書。我只找到一個時間戳服務器可以做到這一點:http://timestamp.globalsign.com/?signature=sha2

signtool/td標誌也很重要(且記錄不完整)。

簽名是這樣的:

signtool sign /fd SHA256 /tr http://timestamp.globalsign.com/?signature=sha2 /td SHA256 /a filename.exe

結果與代碼標誌證書和時間戳證書使用SHA-256的簽名哈希算法的可執行文件。

+1

/td標誌很重要。它也適用於Comodo的時間戳服務器。 –

+1

看起來Comodo終於修復了他們的服務器。 http://netez.com/bbs/viewtopic.php?t=11065#p69307 –

1

您可以使用您的SHA-2證書對代碼進行雙重簽名,以便在XPsp3和Vista(不理解SHA-2)以及後來的操作系統(Win 7,8,10)下進行驗證。

這是一個兩步過程,首先用SHA-1簽名,然後附加一個SHA-256簽名。儘管它並不明確,但第一批signtool默認爲SHA-1簽名。在第二次運行中,您使用/ fd選項請求sha256摘要算法。本例中的時間服務器是Comodo的。

signtool sign /f cert.pfx /p your_cert_password /t "http://timestamp.comodoca.com" /v file_to_sign.exe 

signtool sign /f cert.pfx /p your_cert_pass /fd sha256 /tr "http://timestamp.comodoca.com/?td=sha256" /td sha 256 /as /v file_to_sign.exe 

您需要使用支持雙重簽名(/ as選項)的signtool版本。我相信這是Windows SDK版本8.1或更高版本。

完成此操作後,請檢查可執行文件的安全屬性,並且您應該在XP/VISTA下看到SHA-1和SHA-256簽名(以後的操作系統),但只有SHA-1簽名。

請注意,其他時間服務器有不同的選項來指定摘要算法。您的頒發CA應該能夠提供適當的URL。

相關問題