SENSYN ROBOTICS(センシンロボティクス) Advent Calendar 2019 の 8日目 担当の @Chitama です。
センシンロボティクス という会社で Webやアプリを担当しています。
今回は、Windowsネイティブアプリで必要になるコードサイニング証明書の付与についてまとめてみました。
検証環境
- Windows 10
- Internet Explorer 11
コードサイニング証明書とは
コードサイニング証明書 (Codesigning) とは、オンラインで配布するソフトやプログラムにコード署名をして、ソフトウェアの開発元/配布元を明確にさせることで、コンテンツの完全性を証明するためのものです。
なぜ、コードサイニング証明書をつける必要があるのか?
こんな画面をみたことはありませんか?
この機能は、Microsoft SmartScreen というWindowsに最初から入っている標準セキュリティ機能で、Webからダウンロードしたアプリケーションの配布元がわからないから危険かもしれないけど大丈夫?
という警告です。
この警告が表示される原因は主に次の2つです。
- 危険なサイトにアクセスしたり、危険なアプリケーションをインストールしようとしたりしている
- Webサイトやアプリケーションの安全性を調べるためのデータベースに接続できない
危険なアプリケーション
と検知されないためにコードサインング証明書をアプリケーションにつけるわけです。
設定の流れ
1.コードサイニング証明書のタイプを選ぶ
↓
2. コードサイニング証明書の会社を選ぶ
↓
3. コードサイニング証明書を購入する
↓
4. コードサイニング証明書を申請する
↓
5. コードサイニング証明書をアプリケーションに付与する
所要時間
今回選択したコモドジャパンでは、購入からアプリへの証明付与まで1週間
ほどでできました。
ただし、会社の実在証明として帝国データバンクもしくは東京商工リサーチ(ダンレポ)の登録している場合です。
購入して、営業時間内であればすぐに申請方法のメールが届く。(1日)
申請して、申請受領のメールが届く。(2日~3日)
申請結果が届く。(2日~4日)
実際、水曜日の午後に申請して、次の週の水曜日の真夜中に申請通過のメールが届きました。
参考:【徹底比較】帝国データバンクと東京商工リサーチは何が違う?どっちの情報が正しい?
1. コードサイニング証明書のタイプを選ぶ
コードサイニング証明書には通常のコードサイニング証明書とEVコードサイニング証明書があります。
| 署名有無 | SmartScreen |
|:-----:|:----|:----|
| 署名なし | 警告あり。 [詳細情報] から [実行] ボタンが表示できる |
| 通常コードサイニング | 警告あり。 [実行] ボタンの表示あり。 |
| EVコードサイニング | 初回から警告なし。ドライバーへの更新がある場合は必須。 |
今回は、次の理由で通常タイプとしました。
- ドライバーへの変更ない
- EVコード署名が高い(通常コードサイニングの約3倍)
- 通常コード署名でも10数回のダウンロード実績を稼げは警告が出なくなる
2. コードサイニング証明書の会社を選ぶ
今回は次の優先度で製品を選定しました。
① セキュリティレベル
② 価格
③ サポート体制
④ 実在確認の手間
複数の会社へ相見積や営業さんにヒアリングしたりした結果、 価格によるセキュリティレベルに差はありません。
一番安くて価格と日本語対応可能なコモドジャパンに決めました。
申請後の実在確認としてコールバックと呼ばれる電話がかかってきます。
英語での電話対応は不安だったので日本語でのコールバックはポイントでした。
コモドジャパンのコードサイニングは次のような仕様です。
参照:コモドジャパン
ここで、SmartScreen 即時解除
が非対応になっているので、疑問に思った方もいるかと思います。
SmartScreenが非対応
ではなく、 SmartScreenの即時解除が非対応
ということで、ファイルのダウンロード実績が少ないときに、SmartScreen
の警告が表示されます。
これは10数回ダウンロードすれば解消されるので、問題ないのです。
3. コードサイニング証明書を購入する
コモドジャパンでは、アカウントを作ってWebのマイページから購入できます。
営業時間内に購入すれば、1時間以内にコモドジャパンから申請に関するメールが届きます。
件名: 【COMODO JAPANより】コードサイニングのご注文について 注文番号:xxxxxx
- 価格:¥ 21,000円(税別)~
- (年額)5年だと1万円off 94,200円(税別)~
4. コードサイニング証明書の申請する
購入完了メールに添付されたマニュアルにしたがって申請します。
注意ポイントは2つ。
- 申請で利用したPC端末でしかコードサイニング証明書の付与はできない
- 申請で利用するブラウザは、Internet Explorerのみ
申請の流れは次のとおりです。
1.コモドジャパンに、申請と書類の提出
http://comodo.jp/support/codesign_2nd_val.html
↓
2.Webから申請後、国内審査を実施
↓
3.国内審査が無事通過したあと、本部の認証局側で審査を実施
↓
4.認証局側の審査が通過すると、コモドジャパンから最終審査(コールバック)が通知される
↓
5.最終審査が終了後、認証局(本部)より、申請時に入力されたメールアドレス宛に コレクションコード
送付される
5. コードサイニング証明書をアプリケーションに付与する
申請したPC端末でコレクションコード
送付されたメールに記載されているリンクを開いて証明書をインストールします。
インストールしたPFX (証明書と秘密鍵) を、SignTool
を使ってEXEファイルに署名します。
# PCに保存・接続されている最適な証明書を使用してファイルに自動的に署名
signtool sign /a TargetApp.exe
# パスワードで保護された PFX ファイルを指定してファイルにデジタル署名
signtool sign /f MyCert.pfx /p MyPassword TargetApp.exe
# ファイルにデジタル署名してタイム スタンプを付与
signtool sign /f MyCert.pfx /t http://timestamp.sectigo.com/authenticode TargetApp.exe
# PCに保存・接続されている固有の証明書名 (例 ”My Company Certificate”) を指定してファイルに署名
signtool sign /n "My Company Certificate" TargetApp.exe
# ActiveX コントロールをユーザがインストールする際に表示させる情報として予め作成したURLを指定
Signtool sign /f MyCert.pfx /d: "TargetControlApp" /du http://www.example.com/MyControl/info.html TargetControlApp.exe
# デジタル署名済みのファイルにタイムスタンプを付与
signtool timestamp /t http://timestamp.verisign.com/scripts/timstamp.dll TargetApp.exe
# ファイルが署名済みであることを確認
signtool verify TargetApp.exe
# カタログで署名されている可能性があるシステムファイル確認
signtool verify /a SystemFile.dll
注意点
- Win10よりGUIは廃止になったので、コマンドラインで作成します。
-
SmartScreenの即時解除が非対応
なので、アプリをダウンロードさせたいサイトからダウンロードを10回ほど繰り返して、警告がでないように実績を上げておきます。
まとめ
- 最新のまとまった情報が少なかったです。
- 申請は英語のサイトでしたが、マニュアルが送付されるので問題はありませんでした。
- 何かあっても、問い合わせの返信が翌営業日にはくるので、サポートも十分でした。
9日目は SENSYN DRONE HUB 担当の @nakayamaatsushi さんです✨