11

私は、同じファイルに適用したい2つのコード署名証明書(1つのSHA-1、1つのSHA-256)を持っています。私は、SHA-256証明書を追加しようとしたが、これは失敗します。タイムスタンプ付きのデュアルサインコードはどのように正しく動作しますか?

:: Signs with the SHA-1 certificate 
signtool sign /sha1 8f52fa9db30525dfabb35b08bd1966693a30eccf /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe 
:: Signs with the SHA-2 certificate 
signtool sign /sha1 8b0026ecbe5bf245993b26e164f02e1313579e47 /as /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe 

これはエラーで失敗します。

Done Adding Additional Store 
SignTool Error: SignedCode::Sign returned error: 0x80070057 
     The parameter is incorrect. 
SignTool Error: An error occurred while attempting to sign: my_app_here.exe 

私は2番目のコマンドからのタイムスタンプのURLを削除した場合、署名が正常に完了し、 SHA-2シグネチャにはタイムスタンプはありません。 (最初の署名にタイムスタンプを付けるかどうかは関係ありません)

ここでは、これをサポートするオペレーティングシステム上にあるが、失敗しないように強い証明書でアプリを検証できるようにすることですより強力な証明書(Vista、XP)をサポートしていないオペレーティングシステムでの検証。

このようなことも可能ですか?

+0

まあ、喜んで私は、このための私の必要性だけではないよ知っている... – vcsjones

+0

は、あなたの代わりに '/トンの/ TDのSHA256/TR ...' 'てみました2番目の署名は...? –

答えて

12

SHA-2 Authenticode署名には、RFC 3161タイムスタンプサーバが必要です。このためtimestamp.verisign.comのURLは機能しません。

シマンテック/ VerisignのためのRFC 3161のURLは次のとおりです。

http://sha256timestamp.ws.symantec.com/sha256/timestamp 

あなたはまだ古いhttp://timestamp.geotrust.com/tsa URLを使用している、そしてそれは(2017年4月)に失敗している場合は、上記のいずれかにそれを更新する必要があります。 GeoTrustは、Verisignのように、現在シマンテックの一部です。

出典:

https://knowledge.verisign.com/support/code-signing-support/index?page=content&id=SO5820

+0

「なぜ動作しないのですか」を説明していただきありがとうございます。動作させるには、 '/ t http:// timestamp.verisign.com/scripts/timestamp.dll'を'/tr http:// timestamp.geotrust.com/tsa'に置き換えてください。 –

+1

GeoTrustサーバーはタイムスタンプとしてSHA1ダイジェストを使用していますが、さらに悪いことに、証明書チェーンはMD5ダイジェストを持つルート証明書で終了します。タイムスタンプのSHA256ダイジェストを希望する場合は、URLとしてhttp://timestamp.globalsign.com/?signature=sha2を使用します(/ td SHA256を指定しても問題ありません)。 –

+4

RFC 3161タイムスタンプのURLを持つSHA-256は、http://sha256timestamp.ws.symantec.com/sha256/timestampです。 –

関連する問題