使用SHA256證書進行微軟數字簽名代碼簽名

微軟是第一個宣佈了SHA-1棄用計劃,在2016年以後Windows和IE將再也不信任SHA-1證書。正好咱們公司的數字簽名也到期了,索性就從新申請了sha256和sha1的新數字證書,用來給產品簽名。算法


查閱signcode的文檔發現,signcode的命令行-a是用來指定數字簽名的簽名算法,只支持sha1和md5,不支持sha256app

/fd來指定簽名,md五、sha一、sha256均支持:ide

SignTool.exe sign /v /as /ac /f D:\test\sign\sign_sha256\xxx.pfx /p xxxx /t http://timestamp.wosign.com/timestamp /fd sha256 被簽名文件路徑

常見問題:ui

as選項不識別的問題,可能緣由:SignTool版本太低,使用win10的sdk,目錄C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe。依賴的庫有ncrypt.dll,bcrypt.dll等dll僅在vista及以上系統上有。須要拷貝到老系統上才能正常使用signtool.exe,同時拷貝同目錄下的:spa

appxpackaging.dll
appxsip.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.code

SignTool Error: Specify the RFC 3161 timestamp server's URL instead with /tr.orm

 

把/t換成/tr,可是出現錯誤:server

SignTool Error: The specified timestamp server either could not be reached orreturned an invalid response.ip

通過一番努力後,將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"

相關文章
相關標籤/搜索