Windowsデスクトップアプリの証明書を取得する

やりたいこと
- Windowsアプリ(.exe)を起動するときの警告を消したい

ChatGPTで概要を知る
signtool sign /f path\to\your.pfx /p yourPassword /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a path\to\your.exe

購入できるページ
-
comodo
- https://comodo.jp/products/evcodesign.html
- コモドジャパンという会社名は、現在はセクティゴジャパンに変更されている

概念について
Microsoft SmartScreenとは
Microsoft Smartscreenとは、IE8以降またはWindows8・Windows RTにてソフトウェアの信頼性を評価するシステムです。この評価システムの内容にしたがって、評価を確立されていないソフトウェアをダウンロードする場合、またはインストールする場合には警告またはブロックし、ユーザを危険性の高いソフトウェアから守ります。
EVコードサイニング証明書を利用して署名されたソフトウェアは、発行元の評価が確立していない場合でもSmartScreenにブロックされなくなります。
証明書の種類
自己証明書
いわゆる「オレオレ署名」。コードの作成者が自分で発行し、証明機関とのチェーンは特にない証明書。 テスト用に用いるが、そもそも証明書のしくみが第三者による証明機関が発行していることを前提とするため、ユーザーに配布する場合は不適当。
OV(実在証明型)証明書
証明機関から購入できる比較的安価な証明書。 法人としての登録、簡単な実在確認をおこなった上で発行される。 信頼度は後述のEVよりは弱く、場合によっては信頼されないため、 アプリケーションをインターネット上で配布した場合、ユーザーが実行するとセキュリティ警告が表示される可能性がある。
EV (実在証明拡張型)証明書
証明機関から購入できる高信頼な証明書。 法人としての登録、OVよりも厳格な実在確認をおこなった上で発行される。 自己証明書による署名やOV証明書による署名よりも信頼される。 Windows SmartScreenなどのセキュリティ警告をスキップできる。

一般的なコード証明書を用いた場合の信頼性の向上について聞いてみる
=> EVのほうが頻度高く配布していくアプリとしては良さそうだな
- こちらのブログでも同様の記述あり
警告は十分なボリュームのダウンロードが得られれば、Code Signing無しでも消えます。しかし、新しいバージョンをリリースすると再び表示されます。

コモドジャパンに電話で問い合わせた結果
- 通常の証明書の場合は、十数回のダウンロードで問題が発生しなければ警告が出なくなる。
- アプリの中身が変わると(更新など)、再度↑の信頼がリセットされる。
- EVコード証明書の取得には平均2〜3週間かかる
- 登記簿謄本などが必要であるため
- EVコード証明書と似た名前で、SSLのEV対応の証明書があるがこれは別(webページ用の証明書)

申請翌日、メールが届く
<COMODO EVコード証明書の審査について>
コード証明書の取得審査につきましては、
商品の特性上、SSL証明書の審査と異なり非常に厳格な内容となります。
審査に必要なデータが確認できない場合は、
取得までお時間がかかる場合がございますので予めご了承ください。
■審査に必要なデータ
申請組織、所在地および電話番号の3点が確認できる情報として、
下記いずれか一つが必要となります。
・DUNS Number (ダンズナンバー)
・帝国データバンク
■登録情報についてのご注意
DUNS Numberにて、申請組織と所在地の情報が確認できましても、
電話番号の記載がない場合は、審査を行うことができません。
DUNS Numberに電話番号情報を追加されるか、
弁護士等による意見書が必要となりますので予めご了承ください。
DUNS Numberの情報修正は、Webより無料で行えます。
https://duns-number-jp.tsr-net.co.jp/search/jpn/login.asp
■審査のチェックポイント
ドメイン情報について
登録された、メールアドレスに含まれるドメイン情報の審査が必要となります。
ドメイン情報の審査内容
Whois情報の所有者情報とDUNS Number等に登録されている組織名とのマッチングを確認いたします。
申請組織名 = Whois情報の所有者情報 = DUNS Number 等の組織名
電話番号確認について
最終審査において電話確認 (コールバック) を実施するにあたり、
お客様が申請された電話番号に間違いがないことを確認させていただきます。
DUNS Number 等に登録された、組織名、所在地、お電話番号が、
入力された情報とマッチングしていることが必要です。
■お問合せ先
━━ COMODO DIGITAL CERTIFICATE ━━━━━━━━━━━━
株式会社 コモドジャパン
〒101-0021 東京都千代田区外神田5丁目2番3号
Tel:03-5812-7460 Fax:03-5812-7461
Email:order@jp.comodo.com
______ C・O・M・O・D・O JAPAN INC.___
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

数日後、追加でメールが届く
- 3枚書類を印刷して、直筆し、PDFにして送信

電話認証
- Sectigoから電話が来て、会社名や本名の確認を取る
- のちのUSBが送られてくるとのこと。

審査が通る
大変お世話になっております。
セクティゴジャパンでございます。
電話確認のご対応ありがとうございました。
また、この度は、EVコードサイニング証明書をご購入頂き、誠にありがとうございました。
認証は全て終了となりますので、最終審査が終了次第、認証部門より、USBトークンが郵送されます。
EVコードサイニング署名方法についてご案内させて頂きます。
添付のマニュアルは汎用的に使われますクライアントソフトウェアのマニュアル
になりますのであらかじめご了承くださりますようお願い申し上げます。
■日本語マニュアル
SAC10.2WINDOWS導入にあたり.pdf
https://comodo.jp/support/codesign/dtl_61
■英語マニュアル
007-013559-005_SafeNet Authentication Client_ 10.4_Windows_GA_Release Notes_RevA.pdf
なお
https://comodo.jp/support/codesign/dtl_57#win10
では署名方法について説明を案内させていただいております。
※添付のマニュアルはセキュリティハードウェアモジュール単体のマニュアルであり
それには初期化と書いてありますが弊社で郵送時に同梱している証明書も「初期化」されてしまいますので
絶対に初期化しないでください。

USBが届く
- (アメリカだかカナダだか忘れたが)郵送でUSBが届いた

署名する
- 参考になりそうなものべた張り
https://comodo.jp/support/codesign/dtl_57#win10
https://learn.microsoft.com/ja-jp/windows/win32/seccrypto/using-signtool-to-verify-a-file-signature
https://learn.microsoft.com/ja-jp/dotnet/framework/tools/signtool-exe
https://blog.katsubemakito.net/articles/codesign-windows10
signtool.exeのインストール
- 参考: https://developer.microsoft.com/ja-jp/windows/downloads/windows-sdk/
- Visual Studio Installerで、ユニバーサルWindowsプラットフォーム開発を選択すると、Windows SDKが入手可能
- インストールが終わると、以下に入るので、環境変数でPathに追加する
C:\Program Files (x86)\Windows Kits\10\App Certification Kit
- PowerShellなどで以下のように出たらOK
> signtool /?
Usage: signtool <command> [options]
Valid commands:
sign -- Sign files using an embedded signature.
timestamp -- Timestamp previously-signed files.
verify -- Verify embedded or catalog signatures.
catdb -- Modify a catalog database.
remove -- Remove embedded signature(s) or reduce the size of an
embedded signed file.
For help on a specific command, enter "signtool <command> /?"

SafeNet Authenticationのインストール
- Sectigoから案内されたページ: https://comodo.jp/support/codesign/dtl_61
- zipを展開し、以下のファイルを起動
...\SafeNet Authentication Client_10.8_R8_Windows\SAC 10.8.2210 R8 GA\Msi\x64\SafeNetAuthenticationClient-x64-10.8-R8.msi
- 上記のページ通りのインストーラーウィザード画面が表示される
- もろもろウィザードを進めてインストールは完了
- Windows PCを再起動する

パスワード変更

署名コマンド
> signtool sign /tr http://timestamp.comodoca.com/rfc3161 /td sha256 /fd sha256 /a /n "証明書の発行者名" "署名するファイルのパス"
Done Adding Additional Store
Successfully signed: "署名するファイルのパス"
- コマンドを実行後、以下のようなウィザードにパスワードを入力
コマンドについて
- 公式リファレンス
/tr
RFC 3161 タイム スタンプ サーバーの URL を指定します。 このオプション (または /t) が指定されていない場合、署名されたファイルにはタイム スタンプが付きません。 タイム スタンプを付けるのに失敗すると、警告が生成されます。 このオプションは、/t オプションと一緒に使用することはできません。
/td
/tr オプションと共に使用して、RFC 3161 タイム スタンプ サーバーで使用されるダイジェスト アルゴリズムを要求します。
注: タイムスタンプ中に /td が指定されていない場合、エラーが生成されます。
/fd
ファイルの署名の作成に使用するファイル ダイジェスト アルゴリズムを指定します。
注: 署名時に /fd スイッチが指定されていない場合、エラーが生成されます。
/a
最適な署名証明書を自動的に選択します。 署名ツールは、指定されたすべての条件を満たす有効な証明書をすべて検出し、最も長い期間有効である証明書を選択します。 このオプションが指定されていない場合、署名ツールは有効な署名証明書を 1 つだけ検索することが前提とします。
/n
署名証明書の件名を指定します。 この値には、件名全体の部分文字列を指定できます。
大変参考になります!ありがとうございます!
今、全く同じプロセスでコードサイニング証明書を購入しました。
追記すべき点などあれば、またコメントさせてもらいます。