LoginSignup
0
0

AD CS 証明書失効リストを HTTP 匿名アクセスに構成変更する

Last updated at Posted at 2024-01-21

はじめに

AD CS を構築した直後には、失効リスト (CRL) は、「ファイル共有」のアドレスが構成されています。
ファイル共有は、当然 Windows の認証が掛かっているので、ドメイン外のサーバーからアクセスした場合には認証が必要となります。

私の場合は、NPS サーバーと ドメイン外の AD CS(スタンドアロンCA)を組み合わせて、クライアント証明書の失効確認を構成したかったのですが、以下のエラー「失効サーバーがオフラインだったため、失効関数は失効を確認できませんでした。」のエラーが出ました。このエラーが厄介でして、エクスプローラーから CRL (ファイル共有) を参照した場合、NTLM 認証のおかげで参照ができますが、NPS のサービスを実行しているアカウントが、ローカルアカウントであるために、ドメイン外の ファイル共有 を参照できない状況が発生します。この差に気づけないと立ち往生でハマります。
(NPS サーバーのイベントログ)
image.png

そのため、失効リストを「HTTP 匿名アクセス」へ変更することにより、ドメイン外のホストからでも問題なく参照できるようになり、解決策となります。

この記事では、失効リストを 既定の「ファイル共有」から「HTTP 匿名アクセス」へ構成変更する手順を紹介したいと思います。

1. AD CS と 証明機関 Web 登録 の構成

AD CS の オプション「証明機関 Web 登録」を導入します。
これが導入されていれば、CertEnroll という仮想フォルダが自動作成されます。
このフォルダが、「HTTP 匿名アクセス」の公開場所になります。
image.png

以下の手順の実施にて、AD CS 導入 と 証明機関 Web 登録 の導入ができます。
AD CS 導入済みの場合は、証明機関 Web 登録 だけ 追加導入してください。
※本記事の手順では、スタンドアロン CA を想定しています。

2. CRL 配布ポイントの再構成

2-1. 問題点

証明機関 Web 登録 を導入することにより、CertEnroll の仮想フォルダが作成されるのですが、これだけでは 証明書の失効リストの構成としては十分ではありません。
このままでは、発行された証明書に記載されている「CRL」の値が 変更されないため、証明書をチェックするホストは「ファイル共有」の方を参照してしまいます。
image.png

2-2. CRL 配布ポイントの変更手順

  1. 「サーバーマネージャ」の「ツール」から「証明機関」を開く
    image.png
     
  2. 証明機関の名前を右クリックして、プロパティを開く
    image.png
     
  3. 拡張機能 のタブを開き「http://」の行を選択します。すると、以下の赤枠の2か所が空欄になっているため、チェックを入れます。
  • CRL に含め、クライアントはこれを使って Delta CRL の場所を検索する
  • 発行された証明書の CDP 拡張機能に含める

image.png

4.続いて「file://」や「ldap://」 の行のチェックは外します。
image.png

5.以下のメッセージには「はい」で応答し、サービスを再起動します。
image.png

2-3. 証明書の再発行

このタイミングで、証明書 の再作成を行うことで、CRL 配布ポイントが「HTTP 匿名アクセス」に更新されます。

2-3-1. 証明書 の発行手順

証明書は、以下の手順を参考に、再度 発行してください。

2-3-2. 証明書再発行後の CRL 配布ポイント

再発行された証明書を確認すると、下図のように、配布ポイントが「http://」に変更されています。

image.png

2-3-3. 証明書の配布

CRL が HTTP に更新された証明書を、各ホストに配布しなおしてください。
※(旧)証明書の削除と、(新)証明書のインポート

証明書の削除や確認は、certlm.msc (コンピューター証明書の場合) と、certmgr.msc (ユーザー証明書の場合) のツールを活用してください。

2-4. キャッシュのクリア

旧証明書で証明書の失効確認が行われていると、新しい証明書に差し替えても、キャッシュが残っていて、古い CRL のまま、失効確認が行われてしまいます。
そのため、以下のコマンドを実行して、CRL のキャッシュをクリアしてください。

クライアント証明書の失効確認のキャッシュは、認証サーバー側(NPS サーバー等)、 サーバー証明書の失効確認のキャッシュは クライアントPC 側でのクリアが必要です。

必ず、コマンドプロンプト(管理者)を使って、コマンド ① と ② を続けて実行してください。
※PowerShell だと、コマンド ① は動作しますが、コマンド ② が動きません(私は、これでハマりました)

(コマンド ①)

certutil -urlcache * delete

(実行結果 ①)
image.png

(コマンド ②)

certutil -setreg chain\ChainCacheResyncFiletime @Now

(実行結果 ②)
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0