コードサイン証明書が用意できましたらひとつの.pfxファイルになります。Windows向けソフトウェアのEXEやDLLなどをコード証明書を署名する際に、Signtool.exeというツールを利用すると簡単にできます。
Signtool.exeはMicrosoft Visual StudioまたはMicrosoft Windows Platform SDKをインストールした場合自動的にシステムにインストールされます。署名する際に必要なものは以下の通りです。
- コード証明書PFXファイル
- コード証明書パスワード
- コード証明書発行機関タイムスタンプURL(Time-stamp URL)
- Signtool.exe – Microsoft公式の署名ツール
- 対象ファイルEXE、DLLなど
1と2の証明書PFXファイルとパスワードをコード証明書の管理者からもらいます。3のタイムスタンプURLについて一般的にコード証明書の発行機関のホームページに掲載しています。分からない場合コード署名書の管理者や発行機関にお問い合わせください。
Signtool.exeの位置
Microsoft Visual Studioがインストールした場合
スタートメニュー -> Microsoft Visual Studio [ver] -> Developer Command Prompt for [ver] を実行してコマンド入力画面が表示します。signtool.exeをそのまま実行できます。
Microsoft Windows Platform SDKをインストールした場合
signtool.exeは以下のようなパスにあります。
C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe
8.0はバージョン番号ですので7.0や7.1Aのような可能性もあります。
署名する方法
以下のコマンドを実行すると署名することができます。
signtool.exe sign /f コード証明書.pfx /p パスワード /t タイムスタンプURL 署名対象ファイル
例:
D:\Deploy>signtool sign /f c:\users\jing\desktop\codesign2014.pfx /t [Time-Stamp URL] MyProgram-1.0.exe Done Adding Additional Store Successfully signed: MyProgram-1.0.exe
このような表示なら署名が成功完了します。ファイルで右クリック⇒プロパティ⇒「デジタル署名」のタブから署名情報を確認することができます。
注:「電子メール」のところに「利用不可」と表示する場合がありますが、書名が成功していますので無視してもかまいません。
署名ファイルのサイン有効期限について
上記のようにタイムスタンプURLを指定して署名する場合、その後コード証明書自体が有効期限過ぎても署名されたファイルの有効性は失いません。タイムスタンプを指定していない場合署名されたファイルも無効になりますのでご注意ください。
以上。