【Windows Server上級 第4回】証明書基盤 (AD CS)。OpenSSL使いが知るべきエンタープライズPKIと自動配布の魔術

「オレオレ証明書」の警告画面に、サヨナラを告げよう。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回は、DNSの深淵(スプリットブレインDNSやDNSSEC)について学びました。
名前解決ができるようになったら、次は通信の暗号化、つまり「HTTPS化」ですね。

Linuxエンジニアの皆さん、社内システムのHTTPS化、どうしていますか?
「OpenSSLで自己署名証明書を作って、社員全員に『警告が出るけど無視して進んで』と通達する」……なんて運用、していませんか?
それはセキュリティ教育上、最悪の悪手です。

コウ君

先生、耳が痛いです……。
開発環境のWebサーバー、全部 openssl req -x509 ... で作った証明書を使ってます。
毎回ブラウザで「詳細設定→安全ではありませんが移動する」をクリックするのが面倒で。
でも、Let’s Encryptは社内イントラじゃ使えないし、有料の証明書を買う予算もないし、どうすればいいんですか?

リナックス先生

コウ君、そこにあるじゃない。
Active Directoryがあるなら、Windows Server標準の「AD CS (Active Directory Certificate Services)」を使えばいいのよ。
これを使えば、社内専用の「信頼された認証局」をタダで作れるわ。
しかも、ADに参加しているPCなら、ルート証明書を自動でインストールして「警告なし」にできるの。
今回もウィンドウズ先生に、PKI(公開鍵基盤)の極意を教えてもらいましょう!

ウィンドウズ先生

はい、ウィンドウズ先生です。
Linuxエンジニアの方は、証明書の発行を「コマンド作業」だと思いがちですが、Windowsの世界では「ポリシーによる自動化」が基本です。
PCがドメインに参加した瞬間、必要な証明書が勝手に降ってきて、有効期限が切れる前に勝手に更新される。
これが「オートエンロールメント(自動配布)」の世界です。
今回は、OpenSSLの手作業から脱却し、エンタープライズレベルのPKIを構築する方法を伝授します。

本記事では、AD CSのアーキテクチャ、プライベート認証局(CA)の構築手順、証明書テンプレートの設計、そしてグループポリシー(GPO)を使った証明書の全自動配布・更新システムまでを徹底解説します。

🟥 Windows Server【上級】講座(全12回)カリキュラム

現在地:【第4回】証明書基盤 (AD CS)。OpenSSL使いが知るべきエンタープライズPKI

※入門編(全8回)の復習はこちら:Windows Server入門講座 アーカイブ


第1章:OpenSSL vs AD CS。何が違うのか?

まずは、Linuxエンジニアが慣れ親しんだOpenSSLと、WindowsのAD CSの違いを整理しましょう。

OpenSSL(手動の世界)

  • 秘密鍵の管理: ファイル(server.key)としてサーバー上に平文またはパスフレーズ付きで置く。漏洩リスクが高い。
  • 申請プロセス: CSR ファイルを作成し、CA管理者にメール等で送る。
  • 発行プロセス: CA管理者がコマンドを叩いて署名し、crt ファイル送り返す。
  • 配布・更新: 全て手動。更新忘れによる「証明書期限切れ」事故が多発する。

AD CS(自動化の世界)

  • 秘密鍵の管理: Windowsの証明書ストア(OS管理領域)に格納され、ACLで保護される。秘密鍵のエクスポート禁止も可能。
  • 申請・発行: クライアントPCやサーバーが、RPC(DCOM)経由でCAに直接リクエスト。権限があれば即時発行・自動インストールされる。
  • 配布・更新: GPOにより、期限切れ前に自動的に再取得(リニューアル)が走る。

💡 プロの視点:2階層CA構成
本番環境では、セキュリティのために「ルートCA(オフライン)」と「発行CA(オンライン)」の2階層にするのが鉄則です。
ルートCAは普段電源を切っておき、発行CAがウイルス感染してもルートCAの秘密鍵だけは守るためです。
今回は簡易化のため、1台で兼任する構成で解説しますが、概念として覚えておいてください。


第2章:プライベートCAの構築(エンタープライズCA)

それでは、AD環境内に認証局(CA)を構築します。
このサーバーはドメインコントローラー(DC)とは別立てにするのが推奨ですが、検証環境なら同居でも構いません。

1. 役割のインストール(PowerShell)

「Active Directory 証明書サービス」をインストールします。

Install-WindowsFeature AD-Certificate -IncludeManagementTools
Install-WindowsFeature ADCS-Cert-Authority -IncludeManagementTools

2. CAの構成(ウィザード)

サーバーマネージャーの旗アイコンから「対象サーバーにActive Directory証明書サービスを構成する」をクリックします。

  1. 資格情報: Enterprise Admins権限を持つユーザー(Administrator)で実行。
  2. 役割サービス: 「認証局」にチェック。
  3. セットアップの種類: 「エンタープライズ CA」を選択。
    ※ここが重要です。「スタンドアロン CA」だとAD連携機能が使えません。
  4. CAの種類: 「ルート CA」を選択。
  5. 秘密鍵: 「新しい秘密鍵を作成する」。
  6. 暗号化: SHA256(SHA1は廃止)、鍵長2048bit以上を選択。
  7. CAの名前: わかりやすい名前(例: Corp-Root-CA)を入力。
  8. 有効期間: ルート証明書の寿命です。5年〜10年が一般的。

これで、社内専用の認証局が完成しました。


第3章:ルート証明書のバラ撒き戦略(GPO)

CAを作っただけでは、クライアントPCはまだそのCAを信頼していません。
「信頼されたルート証明機関」ストアに、今作ったCAの証明書をインストールする必要があります。
1台ずつ手動で入れる? いいえ、グループポリシー(GPO)を使います。

配布手順

  1. CAサーバーで、ルート証明書ファイル(.cer)をエクスポートします(ファイル名を指定して実行→certsrv.msc→CA名を右クリック→プロパティ→証明書の表示→詳細→ファイルにコピー)。
  2. 「グループポリシーの管理」を開き、「Default Domain Policy」(または専用のGPO)を編集します。
  3. 以下のパスを開きます。
    コンピューターの構成 > ポリシー > Windowsの設定 > セキュリティの設定 > 公開キーのポリシー > 信頼されたルート証明機関
  4. 右クリック→「インポート」で、先ほどエクスポートした .cer ファイルを読み込ませます。

これで、ドメインに参加している数千台のPCすべてに、次回再起動時(または gpupdate 時)にルート証明書が自動配布されます。
以後、このCAが発行した証明書を持つWebサイト(社内イントラ等)は、ブラウザで「鍵マーク(安全)」と表示されるようになります。


第4章:証明書テンプレートの設計と公開

Linuxエンジニアには馴染みがない概念ですが、AD CSには「証明書テンプレート」というものがあります。
「Webサーバー用」「クライアント認証用」「コード署名用」といった用途ごとに、有効期限や秘密鍵の扱い、発行できる権限(ACL)を定義した雛形です。

テンプレートの作成(複製)

デフォルトのテンプレートは編集できないため、複製して使います。

  1. CAサーバーで certtmpl.msc を実行(証明書テンプレートコンソール)。
  2. 「Web サーバー」テンプレートを右クリック→「テンプレートの複製」。
  3. 全般タブ: 表示名を入力(例: Corp-WebServer)。有効期間を設定(例: 2年)。
  4. セキュリティタブ: ここが最重要です。
    この証明書を発行したい対象(例: Domain ComputersWebServers グループ)を追加し、「読み取り」「登録(Enroll)」の権限を与えます。

テンプレートの公開

作成したテンプレートは、CAサーバー側で「発行」状態にしないと利用できません。

  1. certsrv.msc を開き、「証明書テンプレート」フォルダを右クリック→「新規作成」→「発行する証明書テンプレート」。
  2. さきほど作った Corp-WebServer を選択。

これで、Webサーバーたちがこのテンプレートを使って証明書を申請できるようになりました。


第5章:オートエンロールメント。証明書配布の自動化

いよいよ本丸、オートエンロールメント(Auto-Enrollment)です。
これは「PCやユーザーが、自分に必要な証明書を勝手に判断して、勝手に取得・更新する」機能です。

1. テンプレート側の設定

先ほど作成したテンプレート(Corp-WebServer)のプロパティを開き、セキュリティタブで対象グループ(例: WebServers)に対し、「自動登録(Autoenroll)」の権限にチェックを入れます。

2. GPO側の設定

グループポリシーで「自動登録機能を有効にせよ」とクライアントに命令します。

  1. 対象のOU(Webサーバーが入っているOUなど)にリンクするGPOを作成・編集。
  2. コンピューターの構成 > ポリシー > Windowsの設定 > セキュリティの設定 > 公開キーのポリシー
  3. 「証明書サービスクライアント – 自動登録」をダブルクリック。
  4. 「構成モデル:有効」にし、以下の2つにチェックを入れます。
    • 有効期限が切れた証明書を更新、保留中の証明書を更新、および失効した証明書を削除する
    • 証明書テンプレートを使用する証明書を更新する

結果確認

Webサーバー(IIS)側で gpupdate /force を実行した後、証明書ストア(certlm.msc)を見てみてください。
「個人」フォルダの中に、勝手にサーバー証明書が発行され、格納されているはずです。
管理者が何もしていないのに、です。これがAD CSの魔術です。


第6章:Linuxサーバー(Nginx/Apache)での利用方法

「Windowsサーバーは自動化できていいな。でもLinuxのWebサーバーはどうするの?」
安心してください。Linuxサーバー用の証明書もAD CSから発行できます。

方法A:Windows経由で代理発行(簡単)

Windows端末でCSRを作らずに証明書を発行し、エクスポートしてLinuxに持っていく方法です。

  1. Windows上で certmgr.msc を開き、自分用(またはコンピュータ用)の証明書をリクエスト。
  2. この時、秘密鍵を「エクスポート可能」にするオプションにチェックを入れる。
  3. 発行された証明書を右クリック→エクスポート(秘密鍵を含む .pfx 形式)。
  4. Linuxサーバーに .pfx ファイルを転送し、OpenSSLで分解する。
# 秘密鍵の抽出 (パスワード解除)
openssl pkcs12 -in cert.pfx -nocerts -out server.key -nodes

# 証明書の抽出
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out server.crt

方法B:Webエンロールメント(推奨)

AD CSにはWebインターフェース(http://ca-server/certsrv/)があります。

  1. Linux上で通常通り openssl req ... でCSRを作成する。
  2. ブラウザでAD CSのWeb画面にアクセスし、「証明書を要求する」→「証明書の要求の詳細設定」。
  3. CSRの中身を貼り付け、テンプレート(Webサーバー)を選択して送信。
  4. Base64 エンコード で証明書をダウンロード。

これなら秘密鍵がLinux上から出ないため、よりセキュアです。

💡 さらなる自動化:Certbotのような運用
LinuxからDCE/RPCプロトコルを使ってAD CSに直接リクエストを投げる certmongersssd といったツールもあります。
これらを使えば、LinuxサーバーでもAD CSを使った証明書の自動更新(オートエンロールメント相当)が可能になります。


まとめ:PKIは「信頼」のインフラである

お疲れ様でした!
上級編第4回は、AD CSによるエンタープライズPKIの構築と自動化について解説しました。

今回の重要ポイント:

  • AD CSは「オレオレ証明書」ではない。組織内で正当に信頼される認証局である。
  • ルート証明書はGPOで全端末に自動配布できる(ブラウザ警告ゼロへ)。
  • 証明書テンプレートとGPOを組み合わせれば、サーバー証明書の更新も全自動化できる。
  • Linuxサーバーも、Webエンロールメントを使えばAD CSの恩恵を受けられる。
ウィンドウズ先生

これで社内システムのHTTPS化や、Wi-Fiの証明書認証(802.1x)、VPNの端末認証など、高度なセキュリティ基盤が整いました。
証明書管理は面倒な「作業」ではなく、自動化された「インフラ」なのです。
Linuxエンジニアの皆さんも、ぜひこの快適さを体験してください。

さて、セキュリティが強化されたところで、次は「働き方改革」の要、リモートアクセス環境です。
VPNもいいですが、Windowsには画面転送技術を使った強力なソリューションがあります。

次回、第5回は「リモートアクセスの要塞。RDS (Remote Desktop Services) とVDI入門」です。
単なるリモートデスクトップ接続ではない、アプリ単位の公開(RemoteApp)や、デスクトップ仮想化(VDI)の世界へご案内します。お楽しみに!

▼ セキュアな環境を構築する ▼

AD CSを構築してみる
「おすすめVPS」

おすすめVPSを見る

セキュリティスペシャリストへ
「ITエンジニア転職」

転職エージェントを見る

コメント