わかったこと
-
exeを署名することは、「このexeは自分が作りました」ということ。
信頼できる機関から有効期限
付きの証明書を発行してもらい、exeにくっつける。
exeのプロパティで確認できます。 -
有効期限が切れていてもexeの実行できます。(PCの年月日を変更して確認した。)
-
exeを実行するとき、未署名のときより実行開始されるまで時間がかかります。
(証明書の確認のため?)
署名の準備
コードサイニング証明書は手続きを完了すると、
- IEの個人証明書欄に登録される
- 証明書を秘密鍵とともにエクスポート(この時のパスワードは後で使うのでひかえておく)
- エクスポートは拡張子PFXのものになる。このままだとsigntool.exeで使えないので、
-
Win32 OpenSSL v1.0.1g Lightをインストールし
openssl.exe
を取得。 -
pvktoolから
pvk.exe
を取得。
秘密鍵を取り出す(PFX->pem->pvk)
openssl.exe pkcs12 -in cert.pfx -nocerts -nodes -out cert.pem
# 証明書エクスポート時のパスワード入力
pvk.exe -in cert.pem -topvk -out cert.pvk
# pvkのパスワードを任意に設定。
サーバ証明書を取り出す(PFX->pem->spc)
openssl pkcs12 -in cert.pfx -nokeys -out cert.pem
openssl crl2pkcs7 -nocrl -certfile cert.pem -outform DER -out cert.spc
署名ツールをインストール
Microsoft Windows SDK for Windows 7 and .NET Framework 4をインストールしてsigntool.exe
を使えるようにする。
Download Platform SDK Redistributable : CAPICOM from Official Microsoft Download Centerも必要かも。
signtool.exeを実行してcapicom.dll
が無いと言われたら、以下コマンドでレジストリに登録
regsvr32 "C:\Program Files\Microsoft CAPICOM 2.1.0.2 SDK\Lib\X86\capicom.dll"
署名実施
signtool.exe sign /f cert.pfx /p "pfxのパスワード" hoge.cab
signtool.exe sign /f cert.pfx /p "pfxのパスワード" hoge.exe