はじめに
本記事では、Windows Server の ネットワークポリシーサービス (NPS) と、AD CS のエンタープライズ CA を使って、WiFi の認証として、802.1x 認証 PEAP (EAP-TLS) を構成する手順を紹介します。
PEAP (EAP-TLS) による認証を行うためには、クライアント証明書 を PC へ配布する必要があります。
デバイス紛失時の 証明書失効の運用 を考えた場合には、クライアント毎に 固有の証明書を配布することが必要です。
エンタープライズ CA を使うと、WiFi の認証に必要な ルート証明書・PC ごとに固有の クライアント証明書 を自動的に配布する事が出来るため、運用を考えた場合は、エンタープライズ CA 一択だと思います。
スタンドアロンCA で構成する場合は、各 PC 毎に固有の クライアント証明書 を独自に配布する必要がありますが、その点に課題があります。
PC のキッティング時に、管理者側で クライアント証明書 を埋めこんでしまうとか、3rd パーティ製の証明書配布ソリューションを使う方法、または、NPS や 証明書 の関係性を より深く理解したい場合 には、以下の記事を参照いただくと良いと思います。
同様の構成を スタンドアロン CA で実現する方法
本記事の手順は、以下の公開情報を元に作成しましたが、誤記載や情報の過不足と思われる箇所もありました。もし、この公開情報を参考にして、ハマっている人が居たら、本記事が参考になれれば 幸いです。
公開情報:802.1 X 有線および無線展開のサーバー証明書を展開する
https://learn.microsoft.com/ja-jp/windows-server/networking/core-network-guide/cncg/server-certs/deploy-server-certificates-for-802.1x-wired-and-wireless-deployments
構築手順
1. 前提条件を満たす構成
1-1. サーバー と デバイス の手配
オンプレミスの ネットワーク上に 3 台 の Windows Server が必要です。
1台以上の WiFi デバイスを搭載した Windows 10 or 11 が必要です。
※本記事では、3 台の Windows Server 2022 仮想マシン と 1 台の Windows 11 (物理 PC) で検証しています。
本記事では、以下の表の略称を使って表記していますが、参照先の記事の作成時期によって、ホスト名の表記が揃っていません。
画面キャプチャーでは、以下の ホスト名 が記録されています。あらかじめご承知おきください。
記事内の略称 | 役割 | 1 章 キャプチャ上のホスト名 |
2 章以降 キャプチャ上のホスト名 |
---|---|---|---|
AD01 | ドメインコントローラー (AD DS) | QiitaADSrv | NDES-AD01 |
NPS01 | ネットワークポリシーサービス (NPS) | NPSRADIUS | NDES-NPS01 |
CA01 | 証明書サービス (AD CS) | NPSCA01 | NDES-CA01 |
WiFi-AP | WiFi アクセスポイント | - | - |
PC01 | クライアント PC | - | Surface-lake831 |
1-2. ドメインコントローラー (AD DS) の インストール
以下の記事を参照し、AD01 にドメインコントローラー をインストールします。
※過去に投稿した記事のため ホスト名が異なっていますが、同じ手順です。ホスト名が QiitaAdSrv になっていますが、ご自身の環境のホスト名に読み替えてください。
メンバサーバーのドメイン参加
ドメインコントローラーが構築できたら、その他のサーバー (NPS01 , CA01) を ドメインに参加してください。
ドメイン参加手順は、上記の記事の 2 章 に記載されています。
1-3. ネットワークポリシーサービス (NPS) の インストール
以下の記事を参照し、NPS01 に ネットワークポリシーサービス をインストールします。
※過去に投稿した記事のため ホスト名が異なっていますが、同じ手順です。ホスト名が NPSRADIUS になっていますが、ご自身の環境のホスト名に読み替えてください。
1-4. 証明書サービス (AD CS) の インストール
以下の記事を参照し、CA01 に ネットワークポリシーサービス をインストールします。
※過去に投稿した記事のため ホスト名が異なっていますが、同じ手順です。ホスト名が NPSCA01 になっていますが、ご自身の環境のホスト名に読み替えてください。
2. 証明書の自動配布の構成
2-1. サーバー証明書を自動発行するための構成
本章は、NPS01 に NPS 用のサーバー証明書を自動発行するための手順です。
2-1-1. RAS ans IAS Server セキュリティグループに NPS01 を追加する
(AD01 で作業を行います)
RAS ans IAS Server というセキュリティグループに、NPS サーバー(NPS01) を追加します。
このセキュリティグループは、後で サーバー証明書配布 や アクセス認証 で利用されます。
1.Actice Directory ユーザーとコンピューター を開き、RAS and IAS Servers というセキュリティグループの プロパティ を開きます。
2.以下の画面で、NPS01 のサーバー名を入力して 名前の確認 を押します。正常に認識されると、オブジェクト名に 赤下線部のように アンダーライン がセットされるため、OK を押します。
3.以下のように メンバー の一覧に追加されれば OK です。OK を押して、確定させます。
2-1-2. 証明書テンプレートの構成
(CA01 で作業を行います)
NPS01 用の サーバー証明書 を自動発行するためのテンプレートを作成します。
証明機関を開きます(ココを開くと 画面を確認できます)
CA01 のサーバー マネージャーで、[ツール] をクリックし、[証明機関] をクリックします。 証明機関 Microsoft 管理コンソール (MMC) が開きます。- 以下の画面で、左ペインの CA 名 をダブルクリックして開き、証明書テンプレート を右クリックしてから、管理 をクリックします。
- 証明書テンプレート コンソールが開きます。すべての証明書テンプレートが詳細ウィンドウに表示されます。
詳細ウィンドウで、RAS および IAS サーバー テンプレートをクリックします。
右ペインの 操作 メニューをクリックします。
-
テンプレートの複製 をクリックします。
- テンプレートの プロパティ ダイアログ ボックスが開きます。
全般 タブをクリックして、任意の名称に変更します。
-
セキュリティ タブの グループ名またはユーザー名 欄の 追加 ボタンをクリックします。
-
RAS and IAS Servers と入力して、名前の確認 を押し、赤下線部のように アンダーライン が表示されたことを確認し OK を押します。
-
RAS and IAS Servers のアクセス許可 欄 の 許可 列 で、下図の通り 登録 と 自動登録 の チェック ボックス を オン にします。OK をクリックして、証明書テンプレート MMC を閉じます。
2-1-3. 証明書の自動登録 の有効化
(CA01 で作業を行います)
- 証明機関 MMC で、証明書テンプレート を右クリックします。新規作成 をポイントし、発行する証明書テンプレート をクリックします。
-
証明書テンプレートの選択 で、前章で構成した証明書テンプレートの名前を選択し、OK をクリックします。
- 以下のように 一覧に追加されれば OK です。
ポイント
上記の画面に表示されているテンプレートは、セキュリティ タブ で、自動登録 の権限を付与されたコンピューターに対して 証明書が自動的に発行されます。
2-2. クライアント証明書 を自動発行するための構成
本章は、クライアント PC に クライアント証明書 を自動発行するための手順です。
2-2-1. クライアント証明書 配布用のセキュリティグループの作成と割当
(AD01 で作業を行います)
- Active Directory ユーザーとコンピューター を開き、左ペインで Users を右クリックし、新規作成 をポイントし グループ を選択します。
- グループ名には、任意の名前 を付与して OK を押します。
本記事では、クライアント証明書自動登録 と命名しました。
- 下図の通り、作成したグループが一覧に表示されるため、ダブルクリックして開きます。メンバー タブを選択して 追加 ボタンを押します。
-
オブジェクトの種類 を押します。
-
コンピューター のみにチェックが入った状態にしてOK を押します。
- クライアント証明書を配布(つまり PEAP (EAP-TLS) で WiFi 接続する PC)したいコンピューターオブジェクト名を入力し、名前の確認 を押して、赤下線部の通り、名称にアンダーラインが出た状態 にします。
- 下図の通り、メンバー タブの一覧に PC 名が表示されれば OK です。
以後、繰り返し 配布先のクライアントの登録を繰り返します。
環境構築後でも、このグループに クライアント名 を追加すれば、自動的に配布先に組み込まれます。
2-2-2. 証明書テンプレートの構成
(CA01 で作業を行います)
クライアント証明書 を自動発行するためのテンプレートを作成します。
- 以下の画面で、左ペインの CA 名 をダブルクリックして開き、証明書テンプレート を右クリックしてから、管理 をクリックします。
- 証明書テンプレート コンソールが開きます。すべての証明書テンプレートが詳細ウィンドウに表示されます。
詳細ウィンドウで、コンピューター テンプレートを右クリックして テンプレートの複製 を選択します。
- テンプレートの プロパティ ダイアログ ボックスが開きます。
全般 タブをクリックして、任意の名称に変更します。
-
セキュリティ タブ を選択し、追加 をクリックします。
- 先ほど作成した クライアント用の セキュリティグループ名 を入力して 名前の確認 を押します。下図の赤下線部のように アンダーライン が表示されたら OK を押します。
- 下図の通り、一覧に グループ名 が登録されたら それを選択し アクセス許可 で、登録 と 自動登録 の2か所にチェックを入れて OK を押します。
2-2-3. 証明書の自動登録 の有効化
(CA01 で作業を行います)
- 証明機関 MMC で、証明書テンプレート を右クリックします。新規作成 をポイントし、発行する証明書テンプレート をクリックします。
-
証明書テンプレートの選択 で、前章で構成した証明書テンプレートの名前を選択し、OK をクリックします。
- 以下のように 一覧に追加されれば OK です。
2-3. 証明書の自動登録を構成する
前章までの作業で、テンプレートを自動配布するための事前準備まで完了しています。
本章では、GPO を構成して、自動登録 を有効化します。
2-3-1. コンピューター証明書の自動登録を構成する
(AD01で作業を行います)
- スタートボタンを右クリックして Windows PowerShell (管理者) を開きます。
-
mmc と入力して、Enter キーを押し Microsoft 管理コンソール を開きます。
-
ファイル メニューの スナップインの追加と削除 をクリックします。
-
利用できるスナップイン の一覧を 下にスクロールし、グループ ポリシー管理エディター を選択して 追加 を押します。
-
参照 をクリックします。
-
ドメイン/OU タブ上の Default Domain Policy を選択し、[OK] をクリックします。
- 以下の通り Default Domain Policy が表示されたことを確認し 完了 を押します。
- 以下の通り Default Domain Policy が表示されたことを確認し OK を押します。
- 左ペインで、以下のパスを展開します。
[コンピューターの構成]、[ポリシー]、[Windows の設定]、[セキュリティの設定]、[公開キーのポリシー]
公開キーのポリシー をクリックし、右側の画面に表示された 証明書サービス クライアント - 自動登録 を右クリックして プロパティ を選択します。
- 以下の画面の通りに設定し、OK をクリックします。
- 構成モデル で 有効 を選択します。
- 有効期限が切れた証明書を書き換え、保留中の証明書を更新、および失効した証明書を削除する のチェック ボックスを オン にします。
-
証明書テンプレートを使用する証明書を更新する のチェック ボックスを オン にします。
2-3-2. ユーザー証明書の自動登録を構成する
- 前章 (2-3-1.) と同様に、左ペインで、以下のパスを展開します。
[ユーザーの構成]、[ポリシー]、[Windows の設定]、[セキュリティの設定] を展開します。
公開キーのポリシー をクリックし、右側の画面に表示された 証明書サービス クライアント - 自動登録 を右クリックして プロパティ を選択します。
- 以下の画面の通りに設定し、OK をクリックします。
- 構成モデル で 有効 を選択します。
- 有効期限が切れた証明書を書き換え、保留中の証明書を更新、および失効した証明書を削除する のチェック ボックスを オン にします。
-
証明書テンプレートを使用する証明書を更新する のチェック ボックスを オン にします。
ポリシーの構成が完了したら、PowerShell (管理者) ウィンドウ上で gpupdate /force を実行します。
2-4. 証明書の配布確認
このタイミングで 証明書 の配布状況を確認します。
以下と同様に配布されていれば 証明書配布の構成は問題ありません。
2-4-1. NPS サーバー
- NPS01 を再起動してから、再び サインインします。
- ファイル名を指定して実行 から、certlm.msc を実行します。
-
信頼されたルート証明機関 ストア配下に ルート証明書 が配布されていれば OK です。
-
個人 ストア配下に、NPSサーバー名と同一の サーバー証明書 が配布されていれば OK です。
- サーバー証明書 をダブルクリックで開き、証明のパス タブを開きます。
赤枠の通りに、証明書チェーンが構成されており、「この証明書は問題ありません。」と表示されていれば OK です。
2-4-2. クライアント PC
- クライアント PC を再起動してから、再び サインインします。
- ファイル名を指定して実行 から、certlm.msc を実行します。
-
信頼されたルート証明機関 ストア配下に ルート証明書 が配布されていれば OK です。
-
個人 ストア配下に、ホスト名と同一の クライアント証明書 が配布されていれば OK です。
- クライアント証明書 をダブルクリックで開き、証明のパス タブを開きます。
赤枠の通りに、証明書チェーンが構成されており、「この証明書は問題ありません。」と表示されていれば OK です。
2 章の作成にあたっては、以下の記事を参考にさせていただきました。
3. NPS サーバーの構成
(NPS01 で作業を行います)
- サーバーマネージャーから、ネットワークポリシーサーバー を起動します。
-
802.1Xワイヤレス接続またはワイヤード(有線)接続用の RADIUS サーバー を選択して802.1X を構成する のリンクをクリックして ウィザード を開始します。
-
ワイヤレス接続をセキュリティで保護する を選択し、名前(任意で変更)を設定し 次へ を押します。
- NPS サーバーは、あらかじめ許可された RADIUS クライアント からのみ、認証を受け付けます。
許可されていない RADIUS クライアントから、認証要求が来た場合は、拒否されます。
許可する RADIUS クライアントを追加するために、追加 を押します。
- ここで、RADIUSクライアント(WiFI-AP)の情報を入力して 最後に OK を押します。
・フレンドリ名は、あとで この設定が どの WiFi-AP のものだったのかを識別するための名前です。メーカー名や 機種名、機器の資産番号などを設定します。
・アドレスは、WiFi-AP 自身の IP アドレス を設定します。
・緑下線の共有シークレットは、任意のパスワードを入力して、控えておきます。
※共有シークレットは、次章で構成する RADIUS クライアント (WiFi-AP) 側の設定と同一の文字列である必要があります(つまり、合言葉)
- 下図の通りに追加されたことを確認して 次へ を押します。
-
Microsoft 保護された EAP (PEAP) を選択して 構成 を押します。
8.保護された EAP の内部メソッドの設定を変更していきます。
- Before = セキュリティで保護されたパスワード (EAP-MSCHAPv2)
- After = スマートカードまたはその他の証明書(※ これが EAP-TLS の事です)
保護されたEAP の内部を EAP-TLS で構成するので 結果、PEAP (EAP-TLS) になります。
以下の画面で 追加 を押します。
9.スマートカードまたはその他の証明書 を選択して OK を押します。
10.以下の画面で セキュリティで保護されたパスワード (EAP-MSCHAPv2) を選択して 削除 を押します。
11.以下の画面の表示になった事を確認して OK を押します。
この設定で、NPS サーバーは、PEAP (EAP-TLS) を受け付ける状態になります。
13.802.1x 認証をさせたい オブジェクト の グループ を選択する画面です。
未選択の場合は、全ユーザーが対象となるため、そのまま 次へ 進んで問題ありません。
ここで、複数の条件(ユーザーのグループと、コンピューターのグループなど)を選択した場合は、アンド条件になるので、覚えておきましょう。
15.以下の画面になれば完了です。完了 を押して ウィザードを終了させます。
4. WiFi アクセスポイント側の設定(例)
NPS サーバー と RADIUS で連携させる WiFi アクセスポイント を構成します。
以下の記事に、例として Cisco 社の WiFi-AP で設定した際の内容などを説明してあります。
RADIUS サーバーの IPアドレス には、NPSサーバー の IPアドレスを設定します。
RADIUS シークレット には、前章で設定した NPS サーバーの共有シークレットを入力します。
※一致していないと、認証することができません。
5. クライアント配布用 WiFi プロファイル の構成
(AD01 で作業を行います)
5-1. ポリシーの適用先となる OU の作成
- サーバーマネージャー の ツール から Active Directory ユーザーとコンピューター を開きます。
- ドメイン名を右クリックして、新規作成 をポイントし、組織単位 (OU) を選択します。
- 任意の名称で OU を作成します。以下では WiFi_Client という名称にしています。
- 緑の下線部のように OU が作成されます。Computers コンテナから、クライアント PC を選択して、新規作成した OU へ移動します(複数選択可)
- 以下のメッセージには、はい で応答します。
- 以下の通り、OU の配下に移動されていれば OK です。
以後、クライアントを ドメインに参加させたら、この OU へ移動させることで WiFi プロファイルの配布先として反映されます。
5-2. WiFi プロファイル配布用 GPO の作成
- サーバーマネージャー の ツール から グループポリシーの管理 を開きます。
- 前章で作成した OU 名 を右クリックして このドメインに GPO を作成し、このコンテナーにリンクする を選択します。
- 任意の名称を入力して OK を押します。
- 作成された GPO を右クリックして 編集 を選択します。
- 以下のパスを開き Windows Vista 以降のリリース用の新しいワイヤレスネットワークポリシーの作成 を選択します。
[コンピューターの構成]-[ポリシー]-[Windows の設定]-[セキュリテイの設定]-[ワイヤレスネットワーク (IEEE 802.11) ポリシー]
- 任意の ポリシー名 を入力し クライアントの Windows WLAN 自動構成サービスを使用する にチェックを入れて 追加 を押します。
- 追加ボタンの上に 選択肢が表示されるので インフラストラクチャ を選択します。
-
接続 タブで、WiFi プロファイル名 を入力します。
※ここに入力した プロファイル名 が、クライアント PC 上の SSID 一覧に表示されるようになります。キャプチャでは EAP-TLS になっていますが、手順で構成しているのは PEAP (EAP-TLS) です。
続けて、ネットワーク名 (SSID) に 接続する WiFi-AP で構成済みの SSID を入力して 追加 を押します。
-
セキュリティ タブ では プロパティ を押します。
- 以下の画面で AD CS から発行された ルート証明書(証明機関名)にチェックを入れます。認証方法の選択欄で スマートカードまたはその他の証明書 を選択して 構成 を押します。
- 以下の画面でも、同様に AD CS から発行された ルート証明書(証明機関名)にチェックを入れて OK を押します。
- 以下の画面に戻るので OK を押します。
- 認証モードは コンピューターの認証 を選んで OK を押します。
- 以下の通り、作成した WiFi プロファイルが 一覧に表示されれば OK です。
OK を押して 確定させます。
ポリシーの構成が完了したら、PowerShell (管理者) ウィンドウ上で gpupdate /force を実行します。
本章で参考にした公開情報
なお ここには PEAP (EAP-TLS) の方法までは記載されていないため、自力で設定値を検討した結果になっています。
動作確認
ここまで構成が完了すると、クライアント PC から WiFi 接続ができるようになります。
※クライアント証明書自動登録 のセキュリティグループに追加した クライアント PC が対象です。
- クライアント PC をドメインコントローラー の環境(有線 LAN)に接続して、再起動 または gpupdate /force を実行することで、クライアント証明書 と、WiFi プロファイル が配布されます。
- 有線 LAN のケーブルを抜きます。
これで、WiFi-AP が近くにあれば、PEAP (EAP-TLS) で認証されて WiFi の接続が確立されるはずです。
接続テスト
上記までの手順が完了すると、クライアント PC から WiFi へ クライアント証明書 の 認証 を使って接続することが可能になっています。
- クライアント証明書 が インポートされた PC から接続できること
- クライアント証明書 が 存在しない PC からの接続ができないこと
- 失効した クライアント証明書 が インポートされた PC から接続できないこと
トラブルシューティング
エラー例:その1
(エラーメッセージ)
"サインインするための証明書が必要なため、接続できません。IT サポート担当者に問い合わせてください。"
NPS サーバー 側、クライアント 側 の双方で、以下のセットが適切に配置されている必要があります。作業ミスがないかどうか、再度 確認してください。
- "信頼されたルート証明機関" に ルート証明書 が インポートされている
- WiFi プロファイルで ルート証明書 が 明確に選択されている
証明書関連で接続できない場合のイベントログの一例
- ログの種類:セキュリティ
- イベント ID:6273
- キーワード:失敗の監査
- タスクのカテゴリ:Network Policy Server
- 理由コード:295
- 理由:証明書チェーンは正しく処理されましたが、証明機関の証明書の1つがポリシープロバイダーによって信頼されていません。
エラー例:その2
イベントログに、以下のエラーが出て 接続できない場合があります。
- ログの種類:セキュリティ
- イベント ID:6273
- キーワード:失敗の監査
- タスクのカテゴリ:Network Policy Server
- 理由コード:259
- 理由:失効サーバーがオフラインだったため、失効関数は失効を確認できませんでした。
この場合は、NPS サーバー が、証明書 に定義された CRL へアクセスできない状況です。
以下の観点をチェックしてください。
- NPS サーバー 上で、CRL のアドレスへの名前解決に異常が出ていないか?
- NPS サーバー から、CRL のアドレスへの疎通は?
なお、問題の切り分けの一助として、NPS サーバー が クライアント証明書 の失効確認を無効化することもできるので、これを試して 接続が可能になるかどうか様子を見ることもできます。
NPS サーバー 上で、以下の公開情報に記載されているレジストリ(NoRevocationCheck)キーに、値 "1" を設定してください。サーバーを再起動することで設定が反映されます。
上記は、あくまで 証明書 の失効確認のエラーを回避できない場合の一時的な回避策なので、証明書の失効を運用に組み込む際には、NoRevocationCheck キーを削除して、適切な CRL の構成を行うようにしてください。
トラブルシューティング関連の情報リンク
証明書失効の実施手順
クライアント証明書 が PC や ユーザー 事に配布されていれば、 PC 紛失時や ユーザーの離職 にともなって、証明書失効 の運用が可能になります。
クライアント証明書 を発行する目的の一つは、これをやりたい・・って事だと思います。
NPS サーバー は、802.1x認証時に クライアント PC から提示された クライアント証明書 が、サーバーの "信頼されたルート証明機関" 内にある ルート証明書 と "証明書ペア" を構成できるのかをチェックしています。"ペア" でなければ 認証エラー、 "ペア" であれば、認証成功 となります。
その際に、NPS サーバーが クライアント証明書 に記載されている CRL (失効リスト) へアクセスして、証明書 が 失効されていないかどうかも評価します。
そのため、運用管理者が 失効リスト に、クライアント証明書 の 拇印 を登録することで、紛失した クライアントPC からのアクセスをブロックすることも可能になるという仕組みです。
以下の手順にて、証明書を失効できます。
関連情報