DigiCert証明書の正規代理店株式会社アールエムエス
DigiCertコードサイニング証明書 サポート
DigiCert サーバー証明書利用団体
  1. ホーム
  2. コードサイニング証明書
  3. サポート
  4. SHA-1証明書とSHA256(SHA-2)証明書でデュアル署名する方法
EVコードサイニング証明書コードサイニング証明書

SHA-1証明書とSHA256(SHA-2)証明書でデュアル署名する方法

本ページに記載されている手順は環境により異なる場合があり、実際の動作を保証するものではありません。
アプリケーションやツールなどの仕様や設定手順等でご不明な点がある場合は、それらのマニュアルをご確認いただくか、提供元にご連絡ください。
※この手順によって生じた影響や結果について、弊社では一切の責任は負いかねます。

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でも利用可能なドライバーやコードを配布できます。

SHA-1証明書の追加取得が可能
SHA256(SHA-2)証明書だけをお持ちの場合は、SHA-1証明書を追加で取得することができます。
ご希望の場合は、info@rms-digicert.ne.jp までご連絡ください。
※EVコードサイニング証明書・コードサイニング証明書(トークンなし)どちらも追加が可能です。
拇印取得方法
本ページの手順は、証明書の拇印が取得済みであることを前提として説明しています。
拇印の取得方法は、EVコードサイニング証明書の拇印取得方法を参照してください。
signtoolのインストール
本ページの手順は、signtoolがインストールされていることを前提として説明しています。
signtoolのインストールが完了していない場合は、Windows signtoolの入手を参照しインストールしてください。
デュアル署名できるのは PE ファイル
SHA-1証明書とSHA256(SHA-2)証明書で2重に署名するためには、対象ファイルが PE (Portable Executable) ファイルである必要があります。
PE (Portable Executable) ファイルの詳細は MSDN 情報Windows Authenticode Portable Executable Signature Formatを参照してください。
Path設定
本ページのコマンド事例では、signtoolコマンドへのPathが通っていることを前提とし、署名対象ファイルが存在するディレクトリでのコマンド実行を説明しています。
Pathが通っていない場合はsigntoolにPath設定を参照しPathを設定するか、signtoolコマンドが実行可能なディレクトリで作業してください。
.catファイルにはデュアル署名不可
.catファイルにはデュアル署名することができません。
ただし、SHA-1で署名された .catファイルとSHA-256(SHA-2)で署名された .catファイルをひとつのパッケージにすることで、デュアル署名と同じ効果が得られます。

署名方法

EVコードサイニング証明書でKernel-Modeドライバーに署名する

EVコードサイニング証明書
  1. 以下のリンクからクロスルート証明書をダウンロード・展開し、適当なディレクトリに「DigiCert High Assurance EV Root CA.crt」の名称で保存します(以下事例コマンドは署名対象ファイルと同一のディレクトリに「DigiCert High Assurance EV Root CA.crt」を保存し、そのディレクトリでコマンドを実行した想定です)。
  2. EVコードサイニング証明書トークンをマシンに接続します。
  3. コマンドプロンプトを管理者権限で立ち上げます。
    • スタートボタンからcmd入力、すべてのアプリ選択等の方法で「コマンドプロンプト」アイコンを表示させます。
    • 「コマンドプロンプト」アイコンを右クリックして「管理者として実行」を選択します。
    • 「ユーザーアカウント制御」ウィンドウで「はい」を選択します。
  4. まず、SHA-1証明書で署名します。
    C:\> signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.sys
    XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
  5. 次に、SHA256(SHA-2)証明書で署名します。
    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)証明書の拇印に置き換えてください。
  6. 署名を確認します。
    エクスプローラで sample.sys ファイルを選択し、プロパティから「デジタル署名」タブを開くと確認できます。
    sample.sys ファイルを選択し、プロパティから「デジタル署名」タブを開く

EVコードサイニング証明書でAuthenticodeに署名する

EVコードサイニング証明書
  1. EVコードサイニング証明書トークンをマシンに接続します。
  2. コマンドプロンプトを管理者権限で立ち上げます。
    • スタートボタンからcmd入力、すべてのアプリ選択等の方法で「コマンドプロンプト」アイコンを表示させます。
    • 「コマンドプロンプト」アイコンを右クリックして「管理者として実行」を選択します。
    • 「ユーザーアカウント制御」ウィンドウで「はい」を選択します。
  3. まず、SHA-1証明書で署名します。
    C:\> signtool sign /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.exe
    XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
  4. 次に、SHA256(SHA-2)証明書で署名します。
    C:\> signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /ph /as /sha1 XXSHA256CERTTHUMBPRINTXX sample.exe
    XXSHA256CERTTHUMBPRINTXXの部分はSHA256(SHA-2)証明書の拇印に置き換えてください。
  5. 署名を確認します。
    エクスプローラで sample.exeファイルを選択し、プロパティから「デジタル署名」タブを開くと確認できます。

コードサイニング証明書(Kernel-Mode)でKernel-Modeドライバーに署名する

コードサイニング証明書
  1. SHA-1、SHA256(SHA-2)両方のコードサイニング証明書(Kernel-Mode)をインストールします。
    インストール方法はコードサイニング証明書のインストールを参照してください。
  2. 以下のリンクからクロスルート証明書をダウンロード・展開し、適当なディレクトリに「DigiCert High Assurance EV Root CA.crt」の名称で保存します(以下事例コマンドは署名対象ファイルと同一のディレクトリに「DigiCert High Assurance EV Root CA.crt」を保存し、そのディレクトリでコマンドを実行した想定です)。
  3. コマンドプロンプトを管理者権限で立ち上げます。
    • スタートボタンからcmd入力、すべてのアプリ選択等の方法で「コマンドプロンプト」アイコンを表示させます。
    • 「コマンドプロンプト」アイコンを右クリックして「管理者として実行」を選択します。
    • 「ユーザーアカウント制御」ウィンドウで「はい」を選択します。
  4. まず、SHA-1証明書で署名します。
    C:\> signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.sys
    XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
  5. 次に、SHA256(SHA-2)証明書で署名します。
    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)証明書の拇印に置き換えてください。
  6. 署名を確認します。
    エクスプローラで sample.sys ファイルを選択し、プロパティから「デジタル署名」タブを開くと確認できます。

コードサイニング証明書(Authenticode)でAuthenticodeに署名する

コードサイニング証明書
  1. SHA-1、SHA256(SHA-2)両方のコードサイニング証明書(Authenticode)をインストールします。
    インストール方法はコードサイニング証明書のインストールを参照してください。
  2. コマンドプロンプトを管理者権限で立ち上げます。
    • スタートボタンからcmd入力、すべてのアプリ選択等の方法で「コマンドプロンプト」アイコンを表示させます。
    • 「コマンドプロンプト」アイコンを右クリックして「管理者として実行」を選択します。
    • 「ユーザーアカウント制御」ウィンドウで「はい」を選択します。
  3. まず、SHA-1証明書で署名します。
    C:\> signtool sign /t http://timestamp.digicert.com /sha1 XXSHA1CERTTHUMBPRINTXX sample.exe
    XXSHA1CERTTHUMBPRINTXXの部分はSHA-1証明書の拇印に置き換えてください。
  4. 次に、SHA256(SHA-2)証明書で署名します。
    C:\> signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /ph /as /sha1 XXSHA256CERTTHUMBPRINTXX sample.exe
    XXSHA256CERTTHUMBPRINTXXの部分はSHA256(SHA-2)証明書の拇印に置き換えてください。
  5. 署名を確認します。
    エクスプローラで sample.exe ファイルを選択し、プロパティから「デジタル署名」タブを開くと確認できます。
デジタル証明書ニュース
digicert.comトピックス&ニュース