1. 2026 年の制度変更 — 有効期間 460 日化と秘密鍵の HSM 必須化
「安い証明書を買って、手元の .pfx ファイルに秘密鍵を置いて署名する」——この世界観の記事はまだ検索上位に残っていますが、制度上すでに成立しません。変更は 2 つです。
1.1 秘密鍵のハードウェア格納が必須になった(2023 年 6 月 1 日)
CA/Browser Forum の Ballot CSC-13 は、コード署名証明書の秘密鍵の生成・保管を FIPS 140-2 Level 2 または Common Criteria EAL 4+ 以上の暗号モジュール内に限定しました(どちらも暗号モジュールの安全性を第三者が評価する規格・等級の名前で、平たく言えば「秘密鍵を外へ取り出せない造りの機器、またはそれと同等と認められた仕組み」の水準です)。ハードウェアだけでなく、クラウドベースの鍵生成・保護ソリューションも認められています。続く Ballot CSC-17 が、この要件の発効日を 2023 年 6 月 1 日に延期しました。
重要なのは、この要件が EV だけでなく OV にも及ぶことです。Microsoft の開発者向けドキュメントも「2023 年 6 月以降、CA/Browser Forum は OV 証明書の秘密鍵を HSM またはハードウェアトークンに格納することを要求している。多くの CA が対応する USB トークンかクラウド HSM の選択肢を提供している」と説明しています。
実務側でもこの切り替えは終わっています。GMOグローバルサインの signtool 手順ページは、コマンド例を「新型証明書(2023 年 4 月 24 日以降発行)」と「旧型証明書(PKCS12 形式の .pfx)」で別建てにしており、新型はトークン内の証明書を /a /n "Common Name" で選びます(2023 年 4 月 24 日は同社独自の切替日で、CA/B Forum の 2023 年 6 月 1 日とは別です)。「pfx をビルドサーバーに置いて CI で署名する」前提の古い記事は、そのままでは再現できません。
1.2 最大有効期間が 39 か月から 460 日に短縮された(2026 年 3 月 1 日発効)
Ballot CSC-31 により、公的なコード署名証明書の最大有効期間が 39 か月から 460 日に短縮されました。Code Signing Baseline Requirements の v3.9 から v3.10.0 への改定で、2025 年 11 月 17 日に採択、ballot 本文には発効日 2026 年 3 月 1 日と記載されています。提案者は Microsoft の担当者 2 名です。
ここに押さえておく価値のある食い違いがあります。CA/Browser Forum の要件一覧ページでは、CSC-31 の行の発効日が 2025 年 11 月 7 日と表示されます(2026 年 8 月 31 日確認)。ballot 本文の日付とは別です。文書バージョン v3.10.0 の発効日と、460 日制限という要件の適用開始日を分けているのだろうと推測できますが、CA/Browser Forum は明示していないため断定しません。実務上は ballot 本文の 2026 年 3 月 1 日を基準にしつつ、CA 各社の受付停止日はさらに前倒しであると考えるのが安全です。
実例として DigiCert は、自社の最大有効期間を「CA/Browser Forum の上限を超えないよう 1 日短く」設定し 459 日で発行すると告知しています。459 日超のリクエストの受付停止は 2026 年 2 月 24 日(日本時間 2 月 25 日)で、コード署名・EV コード署名の両方が対象。発行済みの証明書は満了まで使えますが、期限後の再発行は 459 日を超えられず、長期の注文分は返金なしで切り詰められるとしています。この 459 日は DigiCert 固有の運用で、他の CA も同じとは限りません。CA/Browser Forum 側の ballot ページには経過措置の記載がなく、当サイトでは一次情報として確認できていません。
Code Signing Baseline Requirements は 2026 年 8 月 31 日時点で v3.11.0(2026 年 6 月 16 日公開)が最新で、Ballot CSC-32 による Reserved Policy OID の記載必須化は 2026 年 9 月 15 日発効です。要件の条番号や鍵長の具体値は、当サイトでは Baseline Requirements の PDF 本文まで確認できていないため本記事には書きません。
現場側への含意は単純です。公的証明書を使うなら、更新作業は最長でも 460 日(約 15 か月)ごとに回ってきます。年単位で販売されることが多いので、毎年の定例作業と考えておくのが安全です。「一度買えば 3 年放置できる」前提で運用手順を作ると、更新月に配布が止まります。4 章のタイムスタンプと合わせて、更新の段取りを先に決めてください。
2. 公的証明書を買う場合の現実 — 費用と審査(当サイトは未購入)
もう一度宣言します。当サイトは公的なコードサイニング証明書を購入していません。この章に実測値はなく、Microsoft および CA の公開情報の引用と整理です。金額は為替と CA の価格改定で変動します。
2.1 費用の一覧 — ドル建ての目安と円建ての公表価格
| 選択肢 | 費用の目安 | 備考 |
|---|---|---|
| 自己署名 | 無料 | 公開配布には使えない(Python exe のコード署名 完全ガイドの 5.3) |
| Microsoft Store(MSIX=Windows 標準のアプリ配布パッケージ形式) | 無料 | Store 経由の配布のみ。Microsoft が再署名するため初回警告なし |
| Azure Artifact Signing | 約 $9.99/月から | 組織・個人で地域制限あり(3 章) |
| OV 証明書(海外 CA 直販の目安) | $150〜300/年 | CA により変動。HSM / トークンの費用は別 |
| OV 証明書(国内 CA の公表価格) | ¥69,000/年(税抜) | GMOグローバルサインの価格ページ「コードサイニング証明書 1 年」 |
| EV 証明書(海外 CA 直販の目安) | $400+/年 | SmartScreen 目的だけの EV は正当化できない |
| EV 証明書(国内 CA の公表価格) | ¥89,700/年(税抜) | 同ページの EV 版(1 年) |
| SignPath Foundation | OSS なら無料 | OV 相当をマネージドパイプラインで提供。適格条件は当サイトで未確認 |
ドル建ての行は Microsoft Learn の比較表に記載された目安(2026 年 8 月 31 日確認)、円建ての行は GMOグローバルサインの価格ページの記載(2026 年 9 月 1 日確認)です。この表は費用の軸なので、費用の話にならない「署名しない」は外し、代わりに Microsoft Store と SignPath Foundation を加えています。
OV(Organization Validation=法人の実在を確認して発行)と EV(Extended Validation=より厳格な審査)の差は審査の深さです。SmartScreen 目的では差が出ませんが、カーネルモードドライバの署名要件など別の理由があるかは確認してください(Python exe のコード署名 完全ガイドの 2 章)。
日本から買うと、ドル建ての目安より高くなります。$150〜300/年 は海外 CA の直販価格帯で、仮に 1 ドル 150 円なら 2.3〜4.5 万円。上の表の OV ¥69,000 とは実額で約 2.4 万〜4.7 万円の開きがあります(当サイトはどちらも購入しておらず、公開価格ページの引用です)。稟議に出す金額は、購入予定の CA の公表価格で作ってください。
なお USB トークンやクラウド HSM 本体の費用は、当サイトでは確認できていません(購入していないため)。上の価格ページにも証明書の年額しかなく、トークン本体の金額は載っていません。見積もりでは、①証明書の年額 ②トークン本体またはクラウド HSM の利用料 ③紛失・再発行時の費用 ④更新のたびにトークンを作り直す必要があるか——の 4 点を内訳で出してもらってください。
2.2 お金を払っても SmartScreen はすぐには静かにならない
金額より先に理解すべきは、お金を払っても即座には静かにならない点です。Microsoft は「署名済みであっても、新規に作成されたバイナリは、そのハッシュまたは発行元証明書が十分な良好評判の証拠を蓄積するまで SmartScreen 警告を表示することがある」と明記しています。しかも消費者向けエンドポイントには手動で審査を申請する窓口も仕組みも存在しないとされています(企業 IT 向けには Microsoft Security Intelligence portal への提出という経路があります)。
2.3 買う前に確認する 3 点 — トークン/更新の段取り/評判の引き継ぎ
購入時にあわせて確認すべき点は 3 つです。トークンかクラウド HSM か——USB トークンは物理的な受け渡しと保管が必要でビルドサーバーでの自動署名と相性が悪いので、CI で署名したいならクラウド HSM 型を選びます。更新の段取り——上限が 460 日(DigiCert は 459 日)になり販売単位も年ごとが主流なので、更新は毎年の定例作業です。トークンの再発行が要るかを事前に確認してください。証明書を変えると評判が切れる——信頼シグナルは証明書に紐付くため、CA を乗り換えると SmartScreen の評判は積み直しです。加えて PUA(Potentially Unwanted Application=ウイルスではないが望ましくない挙動として警告対象になりうるプログラム)と判定されうるファイルに署名すると証明書に負の評判が付くため、「社内の便利ツールだから」と何にでも同じ証明書で署名する運用は避けてください。
3. Azure Artifact Signing は日本の中小製造業に使えるか
Trusted Signing から改称した Azure Artifact Signing は、Microsoft 自身が「Store 外配布の開発者に対する推奨のコード署名サービス」と位置づけています。ハードウェアトークンが不要で、FIPS 140-3 Level 3 認証の HSM 内で証明書のライフサイクルを管理し、GitHub Actions や Azure DevOps に直結できます。署名に使う証明書が利用者に渡ることは一切なく、サービス内に保管されて署名時のみアクセスされます。「秘密鍵を誰がどこに保管するか」という、社内でいちばん揉める論点を消せるのが最大の利点です。
3.1 対象国の記載が公式ドキュメント内で食い違う
ただし、日本から使う場合には確認すべき点があります。Microsoft 公式ドキュメントの中で、対象国の記述が食い違っています。
| ページ | 組織(Organization) | 個人(Individual) |
|---|---|---|
| Artifact Signing の Quickstart | 米国・カナダ・EU・英国・豪州・NZ・日本・韓国・シンガポール・スイス・ノルウェー・イスラエル | 米国・カナダのみ |
| Windows アプリ開発者向け「Code signing options」 | 米国・カナダ・EU・英国 のみ(日本の記載なし) | 米国・カナダのみ |
いずれも 2026 年 8 月 31 日に確認。
Azure 製品側の正本である Quickstart は「Public Trust 証明書は(日本を含む)これらの国の組織が利用できる。個人開発者は米国またはカナダに所在している必要がある。これらの地理的制限は Private Trust 証明書には適用されない」と書いています。当サイトは Quickstart 側を採用して「日本の法人は Public Trust の対象」と読みますが、別ページに日本が列挙されていない以上、申し込む前に Azure ポータルで実際に選択できるかを確認してください。ここは断定できません。
3.2 SKU・契約条件と、審査に要する 1〜20 営業日
そして日本の個人開発者は Public Trust の対象外です。当サイトの運営者も個人なので試せていません。以下は公式ドキュメントの記載です。
- SKU と価格: Basic は 5,000 署名/月・証明書プロファイル 1 つ、Premium は 100,000 署名/月・各種 10。価格ページの金額表示はプレースホルダで実額が出ない(「見積もりであり実際の価格提示ではない」と注記あり)ため、金額の根拠は Microsoft Learn の「約 $9.99/月から」のみです
- 契約の条件: 無料・試用・スポンサー付きサブスクリプションでは使えず、従量課金か EA の有料サブスクが必要。日割りもなく、作成時に選んだ SKU の満額が請求されます
- 身元確認に 1〜20 営業日(追加書類を求められるとさらに延びます)。配布期限が決まっているプロジェクトでは、ここを工程に織り込んでください
- できないこと: EV は発行しません(将来も予定なしと明言)。Microsoft Store への提出にも使えません。CN / O のカスタム指定も不可で、CN は法人の検証済み正式名称に限ると FAQ が明記しています
- Japan East リージョンがあります(エンドポイントは
https://jpe.codesigning.azure.net)。証明書プロファイルを削除しても既発行の証明書は失効せず、署名も無効になりません
中小製造業が「法人として」使う分には、費用・運用の両面で現実的な選択肢です。特に Private Trust 証明書には地理的制限がかからない点は社内配布で効いてきます。ただし SmartScreen への効果は OV と同じで、即時の信頼は得られません。
4. タイムスタンプと有効期限切れ — よくある誤解を解く
「証明書が切れたら、過去に配った exe も動かなくなるのでは」という質問はよく出ます。ここを扱うのがタイムスタンプです。
署名にタイムスタンプを付けると、「この署名は証明書が有効だった時点で行われた」ことを第三者(TSA = Time Stamping Authority)が保証し、有効期限が切れた後も検証が通ります。逆に言えば、タイムスタンプを付けずに署名した exe は、証明書の有効期限が来た時点で署名が無効と判定される——これが Authenticode の基本的な考え方です。ただし、この期限切れ後の検証挙動そのものは当サイトでは実測していません(実測したのはPython exe のコード署名 完全ガイドの 4.3「期限切れ証明書では署名が書き込まれない」という別の事象です)。
4.1 付け忘れても止まらない — signtool と PowerShell の罠
更新が最長 460 日ごとに回ってくる(1.2)以上、タイムスタンプは必須です。ところがこれは付け忘れても止まりません。
- signtool では
/tも/trも指定しなければタイムスタンプは付きません。しかもタイムスタンプの取得に失敗しても警告止まり(終了コード 2)で、コマンド自体は完了します Set-AuthenticodeSignatureの-TimestampServerに渡す URL はhttp://で始まる必要があります。PowerShell 7.3 でhttps://を受け付けるようになりましたが、内部 API が HTTPS に対応していないため、HTTPS を渡すとエラーが返る一方でファイルはタイムスタンプなしで署名される、と公式ドキュメントが注意喚起しています
「エラーが出たのに署名は付いている、ただしタイムスタンプはない」が最悪です。ビルドスクリプトでは戻り値を検査したうえで、署名後に Get-AuthenticodeSignature の TimeStamperCertificate が null でないことを確認するのが確実です(当サイトの個人の検証環境での実測でも、タイムスタンプなしで署名した exe では null でした)。
$sig = Get-AuthenticodeSignature .\SampleTool.exe
if ($null -eq $sig.TimeStamperCertificate) {
throw "タイムスタンプが付いていません"
}
4.2 タイムスタンプサーバーの URL 一覧
公式ドキュメントに URL の記載があるタイムスタンプサーバーです。いずれも 2026 年 8 月 31 日時点の記載で、URL は変更されることがあります。利用前に各社の公式ページで確認してください。
| 提供元 | URL | 記載元 |
|---|---|---|
| DigiCert | http://timestamp.digicert.com | Microsoft Learn の signtool 公式サンプル |
| GlobalSign(R45 ルート用) | http://timestamp.globalsign.com/tsa/r45standard | GMOグローバルサインの手順ページ |
| GlobalSign(R6 ルート用) | http://timestamp.globalsign.com/tsa/r6advanced1 | 同上 |
| Microsoft(Artifact Signing) | http://timestamp.acs.microsoft.com | Artifact Signing の FAQ |
自己署名証明書で公開の TSA からタイムスタンプを取得できるかは、当サイトでは実測していません。検証で外部サービスへリクエストしない方針を取ったためです。TSA は署名者を問わないはずですが、確認していない以上「できる」とは書きません。
期限切れについては本体記事の実測が効いてきます。有効期限が切れた証明書で署名しようとしても例外は投げられず、署名も書き込まれませんでした(Python exe のコード署名 完全ガイドの 4.3)。「証明書を更新したつもりが古いほうを参照していた」という事故が起きると、無署名の exe が黙って配布されます。NotAfter をビルドスクリプトの冒頭で検査し、期限が近いときは警告を出すのが安全です。
5. おわりに
費用と制度の側から押さえる点は 5 つです。
- 秘密鍵をファイルで持ち歩く手順は、公的証明書ではもう使えません(2023 年 6 月 1 日〜)。買う前に USB トークンかクラウド HSM かを決めます
- 更新は最長でも 460 日ごと。年 1 回の定例作業として担当者と手順を決めておきます
- お金を払っても SmartScreen はすぐには静かになりません。EV の割増分は SmartScreen 目的では回収できません(国内 CA の公表価格は OV が 1 年 ¥69,000、EV が ¥89,700・いずれも税抜)
- タイムスタンプは付け忘れても止まらないので、署名後に
TimeStamperCertificateを検査します - 鍵の保管を社内に置きたくない法人には Azure Artifact Signing が有力。ただし対象国の記載に食い違いがあり、身元確認に 1〜20 営業日かかります
そのうえでいちばん大事な但し書きです。社内の数十台に配る現場ツールなら、ここまでの費用を払っても問題が解決しないことがあります。実行制御(App Control / Smart App Control)のブロックは証明書の購入とは別の話で、情シスでの許可登録が結局必要になるからです。当サイトが実際に exe を署名し、何が変わって何が変わらなかったかを測った記録はPython exe のコード署名 完全ガイドにあります。買う前に、まずそちらで「止めている門」を確定させてください。なお当サイトは公的証明書を購入しておらず、Azure Artifact Signing も日本の個人開発者は Public Trust の対象外のため試せていません。記載は、円建ての公表価格(2026 年 9 月 1 日確認)を除き、2026 年 8 月 31 日時点の公開情報に基づきます。