質問

Advanced Search

Solution ID : SO28686

Last Modified : 05/09/2018

EVコードサイニング証明書での署名方法

Problem

EVコードサイニング証明書を使用して、Microsoft Windows ソフトウェアに署名する方法を教えてください。

Solution

EVコードサイニング証明書を使用してソフトウェアに署名するには、以下を最初にダウンロードしてインストールします。

  1. Microsoft Windows SDK (signtool.exeを取得するために要インストール)
  2. SafeNet eToken Drivers
     

Sign Tool がサポートする、オプションを以下に例として示します。

  • sign: 任意のファイルに署名を行います。
  • /v: コマンドが正常に実行したか、失敗したかにかかわらず、詳細出力と警告メッセージが表示されます。
  • /s: 証明書のストアを指定します。(証明書が個人ストアへインポートされた場合は、SPCCertificateStore はMYになります)
  • /tr: タイム スタンプ サーバー(TSA)の URL を指定します。このオプションが指定されていない場合、署名されたファイルにはタイム スタンプが付きません。
  • /f: ファイルの署名証明書を指定します。ファイルが個人情報交換 (PFX: Personal Information Exchange) 形式のみサポートされています。
  • /pa: 既定の Authenticode 検証ポリシーを使用するように指定します。
     

コマンドラインを使った署名


コマンドラインを使った署名の手順は以下の通りです。

  1. コンピューターにSafenet USB トークンを接続します。
     
  2. 「スタート」 > 「ファイル名を指定して実行」
     
  3. 「CMD」と入力して、 > OKをクリックします。
     
  4. コマンドプロンプト画面がひらいたら、signtoolがあるディレクトリへ移動します。

    例 :cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin

    Note : ルートディレクトリやパスは上記と異なる場合があります
  5. 以下のコマンドの一つを実行します。
  • タイムスタンプありの場合


    signtool.exe sign /s my /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /v "C:\filename.dll"


    Note : 複数の証明書が個人ストアにインストールしてある場合、/sha1オプションを使用して、EVコードサイニング証明書のハッシュ値を指定します。

    例 : signtool.exe sign /s my /sha1 SHA1_hash_value /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /v "C:\filename.dll"
     
  • タイムスタンプなしの場合

    signtool.exe sign /s my /v "C:\filename.dll"

    Note : 複数の証明書が個人ストアにインストールしてある場合、/sha1オプションを使用して、EVコードサイニング証明書のハッシュ値を指定します。

    例 : signtool.exe sign /s my /sha1 SHA1_hash_value /v "C:\filename.dll"
     
  1. 上述のコマンドを実行した場合、以下のダイアログが表示され、トークンパスワードの入力を求められます。

    Note : ファイルへの署名をバッチ処理したい場合は、SafeNetトークンへのシングルログオンを有効にしておく必要があります。詳細はこちらを参照ください。

    [FAQ] How to Enable Single Logon for a SafeNet Token (英語)

    シングルログオンを有効化してログオンしておけば、トークンパスワードの入力なしで署名をバッチ処理できるようになります。
     
  2. トークンパスワードを入力して「OK」をクリックします。ファイルへの署名が成功した旨のメッセージが表示されます。
     

署名の検証


SDK SIGNTOOL.EXE ユーティリティには、ファイルを配布する前にデジタル署名をチェックする機能があります。

  1. 「スタート」 > 「ファイルを指定して実行」
     
  2. 「CMD」 とタイプして > OKをクリックします。
     
  3. コマンドプロンプトから、signtool.exe があるディレクトリへ移動します。
     
  4. 以下を実行します。

    signtool.exe verify /pa /v "C:\filename.dll"


signtoolの詳細情報は以下のマイクロソフトのナレッジベースも参考にしてください。

https://msdn.microsoft.com/ja-jp/library/windows/hardware/ff557573
http://msdn.microsoft.com/en-us/library/aa388170(英語)
http://msdn.microsoft.com/en-us/library/aa387764(v=VS.85).aspx (英語)