HOME IP Messenger FastCopy Tech-memo Diary Twitter [English]

最も安い?コード署名証明書の取得(&使い方)

白水啓章
作成 2018/10/15

概要

最も安い?コード署名(コードサイニング)証明書の取得(&簡単な使い方)の紹介です。

目的

インストーラ等のバイナリを配布する際、そのまま配布するとSmartScreenによってブロックされたり、アンチウイルスソフトによって、ウイルスと誤検出される可能性が高くなります。
コード署名証明書を取得して、バイナリにコード署名を付与することで、これらの問題を防ぐことが出来るようになります。

ただし、お値段高め

コード署名証明書の価格はSSL証明書に比べて高めです。特に日本語でコード署名証明書を取得しようとすると、最も安いコモドジャパンでも2.2万円/年ほど掛かります。シマンテックに至っては9.7万/年というゴージャス価格になっています。
簡単な英語メール(英会話は不要)でも構わなければ、the ssl store(thesslstore.com) という代理店が最も安く、$248/3年、という価格で取得できます。今回はこの代理店経由でコード署名証明書を取得したので、その経緯をまとめます。

手順

大まかには、下記のような手順になります。

  1. DUNS番号取得(東京商工リサーチ)
  2. the SSL Store での COMODOコード署名購入手続き
  3. COMODOとの認証手続き
  4. コード署名証明書のダウンロード&Windows証明書ストアへのインポート
  5. SignToolでの署名(使い方)

DUNS番号の取得

コード署名を取得する際、実際の証明書の発行元であるCOMODOの認証(組織の実在証明)を受ける必要があります。
この際、DUNS番号があると自動電話応答での確認のみで済みます。
東京商工リサーチでDUNS番号を申請&取得します。3,240円&数日掛かります。

DUNS番号は(法人以外に)個人事業主等の法律上の商業的な組織であれば、取得可能なようです。
(従い、コード署名証明書も同様の条件で取得可能のはず、ただし未確認)

the SSL Store での COMODOコード署名証明書の購入手続き

通常のネットショッピングとほぼ同じですが、組織情報も入力する点だけが少し違います。
(なお、サポートは24時間チャット対応で、かなり親切でした)

COMODOとの認証手続き

  1. コモドから「組織情報を検証できません」とのメール連絡。
  2. メールに記載してある申し立て用URLから、こちらのDUNS番号を伝え、この番号で組織情報を検証してください、と通知。
  3. コモドから「OK. 最終コールバック確認として次のURLにアクセスのこと。ボタンを押すとDUNS記載の電話番号に自動発信し、音声で暗唱番号を伝えるので、その暗唱番号をフォームに入力してくれ」とのメール。
  4. URLにアクセスすると「電話発信」ボタンと共に言語選択があり「日本語音声」も選択肢に。
  5. 自動発信の電話を受信し、その音声が伝える暗唱番号をフォームに入力すると、無事認証完了。
    (ただし日本語の音声内容は「番号は、です、NNNN」という「the number is NNNN」を単語単位で直訳したと思われる日本語(笑))

コード署名証明書のダウンロード&Windows証明書ストアへのインポート

  1. コモドから「コード署名証明書が準備できました」というメールに、ダウンロード用URLとアクセスキーが記載されている。
  2. 上記URLから証明書をダウンロードするのだが、Firefoxで受け取ることがポイント。するとFirefoxの証明書ストアにインポートすることができる。Chromeではうまくいかない)
  3. Firefoxの証明書マネージャーから格納した署名を「バックアップ」の形でexportする。
  4. exportしたp12ファイルをダブルクリックしてWindows証明書ストアにインポート
    (必要に応じて利用時のパスワードを設定や権限設定を確認のこと)

SignToolでの署名(使い方)

  1. Windows SDKをインストール
  2. cd C:\Program Files (x86)\Windows Kits\10\App Certification Kit に移動
  3. SHA-1署名 signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll xxx.exe
  4. SHA-256署名 signtool.exe sign /a /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /fd sha256 xxx.exe
  5. /asオプションにすると、コード署名が追加される形に。
  6. 署名の削除は signtool.exe remove /s ファイル名

感想

ということで、思っていたよりも簡単にコード署名証明書の取得が完了しました。
「英語でコールバック電話のやりとりが必要」と身構えていたところ、日本語の自動音声を聞き取るだけでOKでした。

なお、コード署名したバイナリを配布し始めて、2週間程度(ただしダウンロード数はかなり多め)で「署名さえ付与すれば、新しいバイナリでもSmartScreenは何も警告を出さず」という状態になりました。めでたしめでたし。

備考

  1. SignToolでは、PEヘッダを持っているexe/dll等に署名可能(それ以外にCABも可能?)。
  2. p12ファイルを指定して、Acrobat Reader や PDF XChange Proでの署名も一応可能(ただしAcrobat Reader上ではWindows系のルート証明書を標準で認めないため、署名済みPDFの検証で検証できない旨の警告が出る。PDF XChangeは問題ない)。
  3. Lets Encryptならぬ、Lets CodeSigning とかできると良いなぁ、とか思ったり。
  4. 次のサイトも参考なりました。 「コードサイニング証明書を買う前に」
    ただし、「英会話力が必要」という部分、COMODOの認証に関しては古い情報となっているようです。
  5. DUNS番号取得から、COMODO側のDBでDUN番号が確認可能になるまで数日必要な様子。DUNS取得から若干、数日間をおいて申し込んだ方が良いかもしれません。