使用SHA256证书进行微软数字签名代码签名
微軟是第一個宣布了SHA-1棄用計劃,在2016年之后Windows和IE將不再信任SHA-1證書。正好我們公司的數字簽名也到期了,索性就重新申請了sha256和sha1的新數字證書,用來給產品簽名。
查閱signcode的文檔發現,signcode的命令行-a是用來指定數字簽名的簽名算法,只支持sha1和md5,不支持sha256。
/fd來指定簽名,md5、sha1、sha256均支持:
SignTool.exe sign /v /as /ac /f D:\test\sign\sign_sha256\xxx.pfx /p xxxx /t http://timestamp.wosign.com/timestamp /fd sha256 被簽名文件路徑常見問題:
as選項不識別的問題,可能原因:SignTool版本過低,使用win10的sdk,目錄C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe。依賴的庫有ncrypt.dll,bcrypt.dll等dll僅在vista及以上系統上有。需要拷貝到老系統上才能正常使用signtool.exe,同時拷貝同目錄下的:
appxpackaging.dllappxsip.dll
mssign32.dll
opcservices.dll
signtool.exe
signtool.exe.manifest
wintrust.dll
wintrust.dll.ini
Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest
Microsoft.Windows.Build.Appx.AppxSip.dll.manifest
Microsoft.Windows.Build.Appx.OpcServices.dll.manifest
Microsoft.Windows.Build.Signing.mssign32.dll.manifest
Microsoft.Windows.Build.Signing.wintrust.dll.manifest
再試驗出現以下錯誤:
SignTool Error:The /t option is incompatible with the /as option.
SignTool Error: Specify the RFC 3161 timestamp server's URL instead with /tr.
?
把/t換成/tr,但是出現錯誤:
SignTool Error: The specified timestamp server either could not be reached orreturned an invalid response.
經過一番努力后,將http://timestamp.wosign.com/timestamp替換成http://timestamp.wosign.com/rfc3161或者ttp://timestamp.geotrust.com/tsa解決問題。http://timestamp.wosign.com/rfc3161和ttp://timestamp.geotrust.com/tsa是較新的時間戳服務格式,兼容/t和/tr,而http://timestamp.wosign.com/timestamp只適用于/t。最后將兩個簽名指令放到批處理文件里:
set sign_folder=%~dp0%
%sign_folder%\SignTool.exe?sign /v /f %sign_folder%example.pfx /p examplepassword/tr http://timestamp.wosign.com/rfc3161 /fd sha1"%1"
%sign_folder%\SignTool.exe sign /v/as?/f %sign_folder%example.pfx /p examplepassword?/tr http://timestamp.wosign.com/rfc3161 /fd sha256?"%1"
轉載于:https://blog.51cto.com/8413723/1767905
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的使用SHA256证书进行微软数字签名代码签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [J2ME]Nokia播放音乐时发生Me
- 下一篇: JS魔法堂:彻底理解0.1 + 0.2