メニュー
【SSL証明書】FAQ/情報

コードサイニング署名の実務手順 — signtool・USBトークン・タイムスタンプ

ページ更新日:2026/07/05

本ページでは、コードサイニング証明書が手元に届いた後、実際にEXE/MSIなどへ署名するまでの実務手順をステップ形式で解説します。
コードサイニング証明書の基本(OV・EVの違い、USBトークンが必須な理由)は コードサイニング証明書とは?電子署名の仕組みとOV・EVの違い を、価格・仕様は デジサート コードサイニング証明書(価格・仕様) をご覧ください。

署名までの全体フロー

  1. 証明書の取得:申し込み・組織審査を経て発行(OVまたはEV)
  2. USBトークンの受領:秘密鍵を格納したUSBトークン(SafeNet eTokenなど)が郵送で届く
  3. クライアントソフトの導入:SafeNet Authentication Client(SAC)を署名用PCにインストール
  4. 署名の実行:signtool.exe で対象ファイルに署名(タイムスタンプ付与は必須運用に
  5. 署名の検証:signtool verify やエクスプローラーで署名を確認してから配布

Step 1:USBトークン(SafeNet eToken)のセットアップ

SafeNet Authentication Client のインストール

USBトークンをPCで使うには、トークン管理ソフト SafeNet Authentication Client(SAC) が必要です。
デジサートの証明書発行案内に記載されたダウンロード先から入手してインストールしてください(バージョン・画面はOSや時期により異なります。最新の手順はデジサートの公式案内をご確認ください)。

トークンパスワードの注意点(最重要)

初回利用時にトークンのパスワード設定(または初期パスワードからの変更)を行います。
パスワードの入力を規定回数連続で間違えるとトークンがロックされ、最悪の場合は証明書の再発行が必要になります。
パスワードは確実に管理し、担当者交代時の引き継ぎにも注意してください。

Step 2:signtool.exe の入手

Windowsでの署名には Microsoft の signtool.exe を使います。単体配布はされておらず、以下のいずれかに同梱されています。

入手方法 備考
Windows SDK 「Windows SDK Signing Tools for Desktop Apps」のみの選択インストールも可能。パスの例:C:\Program Files (x86)\Windows Kits\10\bin\(SDKバージョン)\x64\signtool.exe(バージョンにより異なります)
Visual Studio C++によるデスクトップ開発などのワークロードに同梱。「Developer Command Prompt」からはパス指定なしで signtool を実行可能

Step 3:EXE/MSI への署名コマンド

USBトークンをPCに挿した状態で、以下のコマンドで署名します(署名時にトークンのパスワード入力を求められます)。

signtool sign /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 /a setup.exe

PowerShellスクリプト(.ps1)への署名

PowerShellスクリプトへの署名は、PowerShell標準の Set-AuthenticodeSignature でも実行できます。

$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath .\script.ps1 -Certificate $cert -TimestampServer http://timestamp.digicert.com

署名済みスクリプトは、実行ポリシー AllSigned / RemoteSigned の環境でも実行できるようになります。

Step 4:タイムスタンプ付与がなぜ重要か

署名時にタイムスタンプ(/tr オプション)を付与しておくと、証明書の有効期限が切れた後も、配布済みバイナリの署名は有効なままになります(署名時点で証明書が有効だったことをタイムスタンプ局が証明するため)。
タイムスタンプなしで署名した場合、証明書の期限切れと同時に署名も無効扱いとなり、配布済みのファイルにも警告が再発します。

2025年12月以降、コードサイニング証明書の最大有効期限は459日(約15ヶ月) に短縮されました。更新サイクルが短くなった今、タイムスタンプ付与を必須の運用ルールにすることが最も重要な対策です。

Step 5:署名の検証方法

配布前に署名が正しく付与されているか確認します。

signtool verify /pa /v setup.exe
確認方法 確認ポイント
signtool verify /pa /v 署名チェーンの検証結果と、タイムスタンプ(Timestamp)が記録されているかを確認
エクスプローラー ファイルを右クリック →「プロパティ」→「デジタル署名」タブで署名者名・タイムスタンプを確認

JARファイルへの署名(jarsigner)

Javaアプリケーション(JARファイル)への署名はJDK付属の jarsigner を使います。USBトークン内の秘密鍵はPKCS#11経由で参照します(構成例。eToken のPKCS#11ライブラリのパスは環境により異なります)。

# eToken のPKCS#11設定ファイル(例:eToken.cfg)
name = eToken
library = C:\Windows\System32\eTPKCS11.dll

# 署名(タイムスタンプ付き)
jarsigner -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg -tsa http://timestamp.digicert.com app.jar "(証明書のエイリアス)"

jarsignerでも -tsa によるタイムスタンプ付与を必ず行ってください。

macOSアプリの署名について

デジサートのコードサイニング証明書は主にWindows・Java向けのソフトウェア署名に使用します。macOSアプリの配布には Apple Developer Program の証明書とNotarization(公証)が別途必要です。詳しくは コードサイニング証明書とは?電子署名の仕組みとOV・EVの違い のmacOSの項をご参照ください。

署名できない・警告が消えないときは

「signtool が証明書を見つけられない」「署名したのに SmartScreen 警告が出る」「タイムスタンプに接続できない」などのトラブルは、原因別のチェックリストにまとめました。
署名したのに SmartScreen 警告が消えない?コードサイニングのトラブル解決チェックリスト
まず、署名済みファイルの状態は Authenticode 署名検証ツール で確認できます(署名の有無・改ざん・署名者・タイムスタンプをブラウザで検証)。

これから取得する方へ

弊社では デジサート コードサイニング証明書(価格・仕様) を取り扱っています。審査・USBトークン受領までのやり取りも弊社がサポートします。

種類 ご注文
OV コードサイニング証明書(一般的なソフトウェア配布・スクリプト署名)
EV コードサイニング証明書(SmartScreen即時信頼・カーネルドライバー署名)
ご不明な点・お見積もり

関連ページ

コードサイニング証明書とは?電子署名の仕組みとOV・EVの違い
EVコードサイニング証明書とは?OVとの違い・必要な場面・取得の流れ
2025年12月:デジサート コードサイニング証明書の有効期限が459日間に変更
デジサート コードサイニング証明書(価格・仕様)