27

signtool.exe を使用して SHA1 と SHA2 でバイナリに二重署名する必要があります。証明書は 256 ビット SHA2 をサポートしています。

Windows 8 SDK のサインツールを使用する:

例えば:

signtool.exe 署名 /as /fd sha256 /t http://timestamp.verisign.com/scripts/timstamp.dll /f "certificate.pfx" /p XXXXXXX "file.dll"

(ここで、XXXXXXX は証明書のパスワードです)

不可解なエラーで失敗します:

SignTool エラー: SignedCode::Sign がエラーを返しました: 0x80070057 パラメータが正しくありません。SignTool エラー: 署名中にエラーが発生しました: file.dll

タイムスタンプなしの署名は機能し、SHA1 または SHA256 として個別に署名することもできますが、二重署名が必要であり、タイムスタンプがないことはあり得ないと想像してください。

32 ビット版と 64 ビット版の signtool.exe を試し、Win7 と Win8 マシンで試し、コマンド ライン オプションをいじってみましたが、うまくいきませんでした。誰かが以前にこの問題にぶつかったことがありますか?

4

7 に答える 7

19

少し古いことは知っていますが、私はこのスレッドにたどり着きました。おそらく他の誰かもそうするでしょう。

最初に SHA1 で署名し、次に SHA256 で署名すると機能します。

signtool.exe sign /f cert_file.pfx /t http://timestamp.comodoca.com/authenticode /p cert_password
signtool.exe sign /f cert_file.pfx /as /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 /p cert_password 

両方の署名で同じ証明書を使用して機能しました。Windows 10 SDK の signtool を使用しましたが、以前のバージョンで動作するかどうかはわかりません。

于 2015-09-17T21:22:10.020 に答える
2

使ってみて

signtool.exe sign /as /fd sha256 /tr http://timestamp.geotrust.com /td sha256 /f certificate.pfx /p XXXXXX file.dll

/tr は RFC3161 タイムスタンプ用で、 /td は明らかに使用するハッシュ用です。

于 2013-09-27T21:29:43.943 に答える
2

martin_costello の回答に追加すると、XP と Vista は RFC タイムスタンプをサポートしていません。sha1 署名には /t オプションを使用する必要があります。

signtool.exe sign /sha1 SHA1_Thumprint /v /d "FileDescription" /du "CompanyURL" /fd sha1 /t http://timestamp.verisign.com/scripts/timestamp.dll "FileName.dll"
signtool.exe sign /sha1 SHA256_Thumprint /as /v /d "FileDescription" /du "CompanyURL" /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 "FileName.dll"
于 2015-08-31T16:01:36.550 に答える