LoginSignup
0
0

802.1x認証 の クライアント証明書の作成(AD CS:スタンドアロンCA)

Last updated at Posted at 2024-01-14

はじめに

Windows の クライアント PC で 802.1x 認証 (EAP-TLS) を使用するための クライアント証明書 を発行するための手順です。
証明書を発行する証明機関は、AD CS を使った方法で説明しています。

AD CS には、エンタープライズ CA と スタンドアロン CA があります。
どちらの方式でも、クライアント証明書 を作成できるのですが、証明書 と クライアント PC との関係性をしっかりと理解することを目的としていますので、スタンドアロン CA を使った手順としています。

1. 事前準備

クライアント証明書 を作成する前に必要な 前提となる環境です。

AD CS の導入

構築済みの AD CS サーバー を用意してください。
この手順では、AD CS が、以下の構成となっていることを想定しています。

  • スタンドアロン CA
  • 証明機関 を導入済み
  • 証明機関 Web 登録 を導入済み

まだ構築していない場合は、以下の手順を参考に準備しましょう。
※スタンドアロン CA を選択してください。

2. クライアント証明書 の作成

以下の URL は、公開情報に記載されている、クライアント証明書 の要件です。
この要件に合った クライアント証明書 を作成する必要があります。
この公開情報を読んだだけで、適切な クライアント証明書 を作るのは難しいと思いますので、その手順については、本章 で説明していきます。

2-1. 証明書要求 (CSR) の作成~申請

クライアント PC へ 管理者権限で サインイン して作業を行ってください。

クライアント証明書 を作成するための 証明書要求ファイル(CSR) を作成します。
この CSR ファイルを 証明機関 (AD CS) へ提出し 承認を受けることで、クライアント証明書を受け取ることができます。

クライアント証明書 を作成する際には、コンピューター認証 または ユーザー認証 のどちらを行う想定であるかを考慮しておく必要があります。

2-1-1. INFファイルの準備

INF ファイルは、CSR を作成するための INPUT ファイルとなります。
作成した INF ファイルを コマンドで変換して、CSR ファイルを作成します。
INF ファイルは、テキストエディタで必要事項を記載して作成します。

  1. クライアント PC に 管理者権限で サインイン します。
     
  2. テキストエディタ を開き、以下の INF ファイルサンプルの内容をコピーして 貼り付けます。

2-1-1-1. "コンピューター認証" 用 INFファイル例

[NewRequest]
Subject = "C=JP,ST=Tokyo,L=Chuo-ku,O=Intellilink,CN=pc01.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.2

[Extensions]
2.5.29.17="{text}"
_continue_ = "dns=pc01.nps.local"

2-1-1-2. "ユーザー認証" 用 INFファイル

[NewRequest]
Subject = "C=JP,ST=Tokyo,L=Chuo-ku,O=Intellilink,CN=user01"
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.2

[Extensions]
2.5.29.17="{text}"
_continue_ = "upn=user01"

INFファイル補足

1."Subject" は、クライアント証明書 の所有者の属性を示しています。
以下を参考に、都道府県、市区町村、組織 などを任意の文字列(英字) に編集してください。
この値は、証明書を取得したクライアント側で 証明書の発行元が 誰であるのかを 人が識別するためのもので、CN=[FQDN]以外の値は、システムの動作に影響するものではありません。動作検証するだけなら、サンプルの内容のままでも問題は無いです。

Subject = "C=JP,ST=[都道府県],L=[市区町村],O=[組織],OU=[組織単位],CN=[FQDN]"

2."pc01.nps.local" となっている箇所は、クライアント PC の ホスト名+ドメイン名 となります。利用する環境に合わせて、修正してください。
"Subject の CN=" と "continue の dns=" の2か所あります。

3."user01" となっている箇所は、ユーザー の UPN名 となります。利用する環境に合わせて、修正してください。
"Subject の CN=" と "continue の upn=" の2か所あります。

4.編集が終わったら、テキストを保存します。名称は任意ですが、本手順では "request.inf" という名前で保存したこととして説明を続けます。

クライアント証明書 の場合は、数多くの証明書を発行するので、PC名やユーザー名ごとに infファイルのファイル名を設定して、保存しておくのも良いと思います。

2-1-2. CSRファイルの作成

  1. コマンドプロンプトを表示して、上記のファイルを保存したフォルダに移動します。
    以下のコマンドを実行します。
    ・request.inf が、事前に作成した INF ファイル名
    ・request.req が、変換後に作成される CSR ファイル名
certreq -new -f request.inf request.req

上記のコマンド実行を実行した時の画面イメージ
image.png

2.以下のように request.req というファイルが出来ている事を確認します。
image.png

これで、CSR ファイルが作成できました。
このファイルを使って、証明機関に対して 証明書の発行要求を出す事ができます。

2-1-3. 証明書要求の実施

  1. ブラウザを起動して、http:// [AD CSサーバーのIP] /certsrv へアクセスして、「証明書を要求する」を押します。
    ページが開かない場合は AD CS サーバー の Windows Firewall の設定を見直してください。
    image.png
     
  2. 「証明書の要求の詳細設定」を選択します。
    image.png
     
  3. 以下の赤枠のリンク先を選択します(この画面は 出ないこともあります)
    image.png
     
  4. 前章で作成した request.req をメモ帳で開き、「すべてを選択」して「コピー」します。
    image.png
     
  5. 先ほど開いた 証明書 Web 登録の画面の以下の場所に、貼り付けて「送信」を押します。
    image.png
     
  6. 証明書の要求が受け付けられると、以下の画面になります。
    image.png

以上で、クライアント証明書の要求 (CSR) が、証明機関 (AD CS) へ申請されました。

2-2. 証明機関で 証明書を承認し、証明書を発行する

こちらは、企業内の 証明機関の管理者の立場になったつもりで作業を行います。
証明機関(AD CS サーバー)へ 管理者権限 でサインインして作業を行ってください。
承認の作業については、以下の記事で 手順を説明していますので、この通りに実施ください。

2-3. 発行された証明書の受け取り

CSR を作成した クライアント PC へ 管理者権限で サインインして作業を行ってください。

  1. ブラウザを起動して、http:// [AD CSサーバーのIP] /certsrv へアクセスして、「保留中の証明書の要求の状態」を押します。
    image.png
     
  2. 以下のリンクが、要求に対して 承認された クライアント証明書 です。
    このリンクを、クリックしてください。
    ここにリンクが表示されていない場合は、以下の点を確認してください。
    ・証明書を要求した時と、同じマシン、同じブラウザ を使っているか?
    ・AD CS サーバー側で、ちゃんと 承認が実施できているか?(否認や削除をしてないか?)
    image.png
     
  3. 以下の赤枠の選択肢を選び、クライアント証明書 をダウンロードします。
    image.png
     
  4. ダウンロードしたファイルは、CertReqコマンドを実行したフォルダへコピーしておきます。
    image.png
     
  5. コマンド画面を 管理者モード で開き、証明書をダウンロードしたフォルダへ "cd" コマンドで移動します。続いて、以下のコマンドを実行して、証明書の受け取り (Accept) を実施します。
CertReq -Accept certnew.p7b

下図の通り、証明書がインストールされた旨のメッセージが表示されれば OK です。
image.png

CertReq -Accept コマンドは、事前に CertReq -new コマンドで証明書を要求した処理の後続処理となっていて、"-new" と "-Accept" は対になっています。
そのため、証明書要求を実施していないマシンに クライアント証明書(p7b) を複製して、CertReq -Accept を実施しても、エラーが発生して取り込めません。
さらに、1回の証明書要求(-new) に対して、1回の -Accept しか実施できません。
2回目の -Accept は、プロセッサエラーが発生して取り込めないため、その場合は CertReq -new の実施からやり直してください。

こんなエラーが出たこともありました。
この時は、クライアント PC に 証明機関のルート証明書が入っていない場合でした。
image.png
以下の記事を参考に、AD CS サーバーから ルート証明書をダウンロードして、クライアント PC にインポートしてください。
https://qiita.com/carol0226/items/33042c5c639c79832aeb

6.実際に取り込まれた クライアント証明書 を確認するために、証明書ストアを開きます。
certlm.msc コマンドを実行します。
image.png

[信頼されたルート証明機関] の配下には、AD CS の名前がついたルート証明書が存在していれば OK です。
image.png

[個人] の配下には、発行した クライアント証明書 が 存在していれば OK です。
image.png

証明書の状態
image.png

3. クライアント証明書 の エクスポート

作成したクライアント証明書を、実際で運用に使う クライアント PC へ配置するためには、いちど pfx 形式で エクスポート する必要があります。

クライアント証明書を 右クリックして、pfx ファイルとしてエクスポートしましょう。

4. クライアント証明書 の 配布(インポート)

pfx 化したファイルを、運用する クライアント PC 上へコピーして、インポートします。
インポートが完了したら、802.1x 認証用の証明書として利用可能です。

コンピューター認証用の証明書は、ローカルコンピューターストアへ
ユーザー認証用の証明書は、ユーザーストアへ 配置してください。

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