Windows7でもWindows8でも利用可能なドライバーやコードに署名する場合などに、SHA-1証明書とSHA256(SHA-2)証明書で2重に証明したい場合があります。
Windows8はSHA256(SHA-2)証明書に対応していますが、「Microsoft, Availability of SHA-2 Code Signing Support for Windows 7 and Windows Server 2008 R2, 2015」アップデートを行っていないWindows7は、SHA256(SHA-2)証明書に対応していません。
Digicertコードサイニング証明書を使えば、SHA-1証明書で署名したあとにSHA256(SHA-2)証明書で追加署名することができますので、Windows7でもWindows8でも利用可能なドライバーやコードを配布できます。
SHA256(SHA-2)証明書だけをお持ちの場合は、SHA-1証明書を追加で取得することができます。
ご希望の場合は、info@rms.ne.jp までご連絡ください。
本ページの手順は、証明書の拇印が取得済みであることを前提として説明しています。
拇印の取得方法は、EVコードサイニング証明書の拇印取得方法を参照してください。
本ページの手順は、signtoolがインストールされていることを前提として説明しています。
signtoolのインストールが完了していない場合は、Windows signtoolの入手を参照しインストールしてください。
SHA-1証明書とSHA256(SHA-2)証明書で2重に署名するためには、対象ファイルが PE (Portable Executable) ファイルである必要があります。
PE (Portable Executable) ファイルの詳細は MSDN 情報Windows Authenticode Portable Executable Signature Formatを参照してください。
本ページのコマンド事例では、signtoolコマンドへのPathが通っていることを前提とし、署名対象ファイルが存在するディレクトリでのコマンド実行を説明しています。
Pathが通っていない場合はsigntoolにPath設定を参照しPathを設定するか、signtoolコマンドが実行可能なディレクトリで作業してください。
.catファイルにはデュアル署名することができません。
ただし、SHA-1で署名された .catファイルとSHA-256(SHA-2)で署名された .catファイルをひとつのパッケージにすることで、デュアル署名と同じ効果が得られます。
C:\> signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.sys
※XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
C:\> signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /tr http://timestamp.digicert.com /td sha256 /fd sha256 /ph /as /sha1 XXSHA256CERTTHUMBPRINTXX sample.sys
※XXSHA256CERTTHUMBPRINTXXの部分はSHA256(SHA-2)証明書の拇印に置き換えてください。
C:\> signtool sign /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.exe
※XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
C:\> signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /ph /as /sha1 XXSHA256CERTTHUMBPRINTXX sample.exe
※XXSHA256CERTTHUMBPRINTXXの部分はSHA256(SHA-2)証明書の拇印に置き換えてください。
C:\> signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.sys
※XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
C:\> signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /tr http://timestamp.digicert.com /td sha256 /fd sha256 /ph /as /sha1 XXSHA256CERTTHUMBPRINTXX sample.sys
※XXSHA256CERTTHUMBPRINTXXの部分はSHA256(SHA-2)証明書の拇印に置き換えてください。
C:\> signtool sign /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.exe
※XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
C:\> signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /ph /as /sha1 XXSHA256CERTTHUMBPRINTXX sample.exe
※XXSHA256CERTTHUMBPRINTXXの部分はSHA256(SHA-2)証明書の拇印に置き換えてください。