はじめに
モダンブラウザが TLS 証明書として SAN (Subject Alternative Name) をチェックするようになって以降、Windows IIS に組み込まれている証明書要求機能を用いて証明書を作っても、証明書エラー(NET::ERR_CERT_COMMON_NAME_INVALID等)となります。
過去には色々な情報源を参考にさせていただき切り抜けていたのですが、今回あらためて AD CS (ActiveDirectory 証明書サービス) を活用する最小手順を確認、整理して覚書として残しました。
※単に最近 Enterprise CA を触り始めただけだったり...
対応概要
- certreq.exe で CSR 作成~証明書発行まで行う
- IIS にインポートし動作確認する
前提環境
- すべて ActiveDirectory ドメイン傘下の環境
- AD CS として TLS 証明書発行可能な Enterprise CA が構成済み
- IIS が構築済み。サーバ証明書で https 通信をサイトに設定したい
参考) 今回作った検証環境(on Windows 11 Hyper-V)
- AD DS (Windows Server Core 2025 Standard) ... Domain Controller
- AD CS (Windows Server Core 2025 Datacenter) ... Enterprise Root CA
- ドメインメンバーサーバ (Windows Server 2025 Standard) ... IIS 用
事前調査・対応
Enterprise CA の [証明機関] 画面から、[証明書テンプレート] を確認する。
Webサーバー用証明書テンプレートが、オリジナルの「Web サーバー」しかない場合には、[証明書テンプレート] > [管理] と進んで複製し、複製物を半角英数字からなる名前にしてから、それを発行しておく。
(今回は WebServerCustom としました。後続手順で CSR を作成する際に日本語名では認識してくれないようでしたので。)
※余談ですが、テンプレートのプロパティに [サブジェクト名] というタブがあり、ここに色々と指定できそうな内容がありましたが、試してみても対応困難でした。
作業1-a.(.inf ファイル作成)
下記 MS 情報ページの中ほどに RequestPolicy.inf を作成するという内容があるので、
https://learn.microsoft.com/ja-jp/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff625722(v=ws.10)#customizing-requestpolicyinf-for-your-environment
この .inf の内容をメモ帳に全て貼り付けて以下に編集、保存する。(今回は C:\Work\req.inf にしました。)
- [NewRequest] セクション下の Subject を変更
- EncipherOnly 行は不要(コメント化)
- [Extensions] セクション下は必要な記載のみに変更、値も適切に設定
- [RequestAttributes] セクション下は、証明書テンプレート名の指定行のみにする
作業1-b.(証明書作成)
コマンドプロンプトか PowerShell コンソールを起動し以下を実行、証明書ファイル .cer ができたことを確認する。社内システム用途であれば Enterprise CA に頼ると便利です。
cd C:\Work
certreq -new req.inf req.req
certreq -submit req.req req.cer
作業2(IISへのインポート~動作確認)
-
IIS を起動し、左ペインのサーバ名をクリックし、中央ペインの [サーバー証明書] アイコンをクリック
-
右上の [証明書の要求の完了...] をクリックし、以下で進める
今回主に参考にさせていただいた情報
ありがとうございます。