mozilla

Authenticode による実行ファイルへの署名

この記事では、Microsoft Authenticode Digital ID を利用して、Windows アプリケーションインストーラなどの実行ファイルにデジタル署名を付ける方法について説明します。

はじめに

Microsoft は、当然のことながら、独自の署名ツールを SDK に同梱していますが、もうひとつの選択肢として Mono を使う方法があります。Mono の署名ツールを使えば、Mac や Linux でも実行ファイルに署名をすることが可能です。ここで説明する手順は Mac での作業を前提としています。

Mono のインストール

Mono Framework の最新版を ダウンロード してインストールします。Mono はオープンソース・フリーソフトウェアです!

パスの設定

export PATH=${PATH}:/Library/Frameworks/Mono.framework/Commands

証明書のエクスポート

  1. Windows の [証明書マネージャ] を開きます。Windows の [スタート] ボタンをクリックし、[検索] ボックスに「certmgr.msc」と入力します。
  2. 自分の組織の証明書を探します。
  3. 証明書を右クリックし、[すべてのタスク] > [エクスポート] を選択します。
  4. [証明書のエクスポート ウィザード] が開きます。[次へ] を選択します。
  5. [はい、秘密キーをエクスポートします] を選択し、[次へ] を選択します。
  6. [証明のパスにある証明書を可能であればすべて含む] というオプションにチェックを入れ、[次へ] を選択します。
  7. 秘密キーを保護するパスワードを入力し、[次へ] を選択します。
  8. ファイル名を入力します。例「authenticode.pfx
  9. エクスポートを完了します。デスクトップに PFX ファイルがエクスポートされます。

証明書の SPC/PVK 形式への変換

OpenSSL を使用し、エクスポートした PFX ファイルを PVK ファイルと SPC ファイルに変換します。Mac では OpenSSL は標準装備されています。

openssl pkcs12 -in authenticode.pfx -nocerts -nodes -out key.pem
openssl rsa -in key.pem -outform PVK -pvk-strong -out authenticode.pvk
openssl pkcs12 -in authenticode.pfx -nokeys -nodes -out cert.pem
openssl crl2pkcs7 -nocrl -certfile cert.pem -outform DER -out authenticode.spc

PVK ファイルと SPC ファイルが出力されたら、これらを厳重に保管します。PFX ファイルと PEM ファイルは削除します。

署名

signcode \
 -spc authenticode.spc \
 -v authenticode.pvk \
 -a sha1 -$ commercial \
 -n My\ Application \
 -i http://www.example.com/ \
 -t http://timestamp.verisign.com/scripts/timstamp.dll \
 -tr 10 \
 MyApp.exe

参考資料

ドキュメントのタグと貢献者

Contributors to this page: Kohei
最終更新者: Kohei,