はじめに
ネットワークポリシーサーバー (NPS) で使用するための サーバー証明書 を発行するための手順です。
証明書を発行する証明機関は、AD CS を使った方法で説明しています。
AD CS には、エンタープライズ CA と スタンドアロン CA があります。
どちらの方式でも、NPS 用 の サーバー証明書 を作成できるのですが、証明書 と NPS との関係性をしっかりと理解することを目的としていますので、スタンドアロン CA を使った手順としています。
1. 事前準備
NPS 用 のサーバー証明書 を作成する前に必要な 前提となる環境です。
1-1. NPS の導入
構築済みの NPS サーバー を用意してください。
まだ構築していない場合は、以下の手順を参考に構築しましょう。
1-2. AD CS の導入
構築済みの AD CS サーバー を用意してください。
この手順では、AD CS が、以下の構成となっていることを想定しています。
- スタンドアロン CA
- 証明機関 を導入済み
- 証明機関 Web 登録 を導入済み
まだ構築していない場合は、以下の手順を参考に準備しましょう。
※スタンドアロン CA を選択してください。
2. サーバー証明書の作成
以下の URL は、公開情報に記載されている、NPS サーバー用の証明書の要件です。
この要件に合った サーバー証明書 を作成する必要があります。
この公開情報を読んだだけで、適切な サーバー証明書 を作るのは難しいと思いますので、その手順については、本章 で説明していきます。
2-1. 証明書要求 (CSR) の作成~申請
NPS サーバーへ 管理者権限で サインイン して作業を行ってください。
サーバー証明書 を作成するための 証明書要求ファイル(CSR) を作成します。
この CSR ファイルを 証明機関 (AD CS) へ提出し 承認を受けることで、サーバー証明書を受け取ることができます。
2-1-1. INFファイルの準備
INF ファイルは、CSR を作成するための INPUT ファイルとなります。
作成した INF ファイルを コマンドで変換して、CSR ファイルを作成します。
INF ファイルは、テキストエディタで必要事項を記載して作成します。
- NPS の 役割を導入した サーバー にサインインします。
- テキストエディタ を開き、以下の INF ファイルサンプルの内容をコピーして 貼り付けます。
[NewRequest]
Subject = "C=JP,ST=Tokyo,L=Chuo-ku,O=Sample,CN=npsradius.nps.local"
Exportable = TRUE
KeyLength = 2048
KeySpec = 1
KeyUsage = 0xA0
MachineKeySet = True
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
HashAlgorithm = sha256
ProviderType = 12
RequestType = CMC
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1
[Extensions]
2.5.29.17="{text}"
_continue_ = "dns=npsradius.nps.local"
3."Subject" は、サーバー証明書 の所有者の属性を示しています。
以下を参考に、都道府県、市区町村、組織 などを任意の文字列(英字) に編集してください。
この値は、証明書を取得したクライアント側で 証明書の発行元が 誰であるのかを 人が識別するためのもので、CN=[FQDN]以外の値は、システムの動作に影響するものではありません。動作検証するだけなら、サンプルの内容のままでも問題は無いです。
Subject = "C=JP,ST=[都道府県],L=[市区町村],O=[組織],OU=[組織単位],CN=[FQDN]"
4."npsradius.nps.local" となっている箇所は、NPSサーバー のホスト名+ドメイン名 となります。利用する環境に合わせて、修正してください。
"Subject の CN=" と "continue の dns=" の2か所あります。
上記の値は、NPS で認証を行う クライアントPC が DNSで名前解決する事ができる名称になっている必要があります。
具体的に言うと、"nslookup npsradius.nps.local" のコマンドを実行したら、NPS サーバー の IPアドレス が返ってくる状態です。
5.編集が終わったら、テキストを保存します。名称は任意ですが、本手順では "request.inf" という名前で保存したこととして説明を続けます。
2-1-2. CSRファイルの作成
- コマンドプロンプトを表示して、上記のファイルを保存したフォルダに移動します。
以下のコマンドを実行します。
・request.inf が、事前に作成した INF ファイル名
・request.req が、変換後に作成される CSR ファイル名
certreq -new -f request.inf request.req
2.以下のように request.req というファイルが出来ている事を確認します。
これで、CSR ファイルが作成できました。
このファイルを使って、証明機関に対して 証明書の発行要求を出す事ができます。
2-1-3. 証明書要求の実施
- ブラウザを起動して、http:// [AD CSサーバーのIP] /certsrv へアクセスして、「証明書を要求する」を押します。
ページが開かない場合は AD CS サーバー の Windows Firewall の設定を見直してください。
- 「証明書の要求の詳細設定」を選択します。
- 以下の赤枠のリンク先を選択します(この画面は 出ないこともあります)
- 前章で作成した request.req をメモ帳で開き、「すべてを選択」して「コピー」します。
- 先ほど開いた 証明書 Web 登録の画面の以下の場所に、貼り付けて「送信」を押します。
- 証明書の要求が受け付けられると、以下の画面になります。
以上で、サーバー証明書の要求 (CSR) が、証明機関 (AD CS) へ申請されました。
2-2. 証明機関で 証明書を承認し、証明書を発行する
こちらは、企業内の 証明機関の管理者の立場になったつもりで作業を行います。
証明機関(AD CS サーバー)へ 管理者権限 でサインインして作業を行ってください。
承認の作業については、以下の記事で 手順を説明していますので、この通りに実施ください。
2-3. 発行された証明書の受け取り
NPSサーバーへ 管理者権限で サインインして作業を行ってください。
- ブラウザを起動して、http:// [AD CSサーバーのIP] /certsrv へアクセスして、「保留中の証明書の要求の状態」を押します。
- 以下のリンクが、要求に対して 承認された サーバー証明書 です。
このリンクを、クリックしてください。
ここにリンクが表示されていない場合は、以下の点を確認してください。
・証明書を要求した時と、同じマシン、同じブラウザ を使っているか?
・AD CS サーバー側で、ちゃんと 承認が実施できているか?(否認や削除をしてないか?)
- 以下の赤枠の選択肢を選び、サーバー証明書 をダウンロードします。
- ダウンロードしたファイルは、CertReqコマンドを実行したフォルダへコピーしておきます。
- コマンド画面を 管理者モード で開き、証明書をダウンロードしたフォルダへ "cd" コマンドで移動します。続いて、以下のコマンドを実行して、証明書の受け取り (Accept) を実施します。
CertReq -Accept certnew.p7b
下図の通り、証明書がインストールされた旨のメッセージが表示されれば OK です。
CertReq -Accept コマンドは、事前に CertReq -new コマンドで証明書を要求した処理の後続処理となっていて、"-new" と "-Accept" は対になっています。
そのため、証明書要求を実施していないマシンに サーバー証明書(p7b) を複製して、CertReq -Accept を実施しても、エラーが発生して取り込めません。
さらに、1回の証明書要求(-new) に対して、1回の -Accept しか実施できません。
2回目の -Accept は、プロセッサエラーが発生して取り込めないため、その場合は CertReq -new の実施からやり直してください。
こんなエラーが出たこともありました。
この時は、NPS サーバーに 証明機関のルート証明書が入っていない場合でした。
以下の記事を参考に、AD CS サーバーから ルート証明書をダウンロードして、NPSサーバーにインポートしてください。
★この記事の通りに作業をすすめますが、相違点があります。
本作業の場合は、証明書 の インポート先は「ローカルコンピューター」にしてください。
https://qiita.com/carol0226/items/33042c5c639c79832aeb
6.実際に取り込まれた サーバー証明書 を確認するために、証明書ストアを開きます。
certlm.msc コマンドを実行します。