2016-02-05 33 views
3

我一直在使用SHA1簽名多年,但從2016年起,Windows迫使開發人員使用SHA256。如何在Windows 7上使用SHA256設置signtool?

Windows Enforcement of Authenticode Code Signing and Timestamping

通過使用Windows 7 SDK signtool職能簽署SHA-256是「未知的命令」,所以這是signtool過時的signtool,不應該被使用了。

用SHA256簽名我下載了Windows 8.1 SDK以獲得具有新功能(/ fd和其他一些功能)的signtool.exe。 BAT文件和signtool可以在Windows 8和Windows 10上運行,所以我知道它可以工作,但是在Windows 7嘗試爲文件添加時間戳時崩潰。

Signing fails

我用一個bat文件簽署文件,它看起來像這樣(我編輯的BAT文件,所以它不顯示變量,完整路徑,公司名和密碼):

Path\signtool.exe sign /f "Path\Certificate.p12" /fd sha256 /p *password* /du "URL" /tr "timestampServer?td=sha256" /td sha256 /d "Product name" "Filename" 

我想,我沒有合適的SDK來支持一些功能,但我無法找到任何有關如何在Windows 7上設置此信息的信息。我試圖安裝MS Visual C++ 2015 Redistributable (x64)在我的機器上而不解決問題。

+0

我已經安裝了Visual Studio 2015年在我的Windows 7,這樣做是爲了讓所有的包和工具。 signtools在我的Windows 7上都沒有工作:8.1_x86,8.1_x64,10_x86和10_x64。如果我得到時間,我會嘗試調試該程序,因爲這使我瘋了。 –

回答

3

看來我不擅長閱讀。我正在回答自己的問題,因爲其他人可能會發現很難找到,就像我一樣。

Windows不再支持Windows 7上的signtool.exe,所以這就是爲什麼像SHA-1簽名這樣的舊/過時功能仍然有效,但SHA-256時間戳是個問題。我發現這個MSDN上:從MSDN

報價:注意您只能使用SignTool簽署在Windows 8及更高版本或Windows Server 2012和 後您的Windows 商店應用程序包。您無法使用SignTool在較低級別的操作系統(如Windows 7或Windows Server 2008 R2)上籤署應用程序軟件包 。

如果你想閱讀整個事情然後看看在這裏:

How to sign an app package using SignTool