ユーザ数が多くなると、EAP-TLS用のクライアント証明書を配布するのは大変な作業である。そこで、WindowsServer2012のActiveDirectory(AD)を利用して、クライアント証明書(ユーザ証明書)を自動的に配布する仕組みを紹介する。
前提条件:
・WindowsServer2012で、ActiveDirectoryの設定が終わっていること。
・WindowsServer2012で、証明機関のインストールと構成が終わっていること。
(1)「管理ツール」から「証明機関」を起動

(2)証明書テンプレートを作成する。
左ペインから「証明書テンプレート」を右クリックして「管理」を選択

テンプレート「ユーザ」を右クリックし、「テンプレートの複製」を選択。

「ユーザ」テンプレートを複製し、ユーザに証明書を自動配布するテンプレートを作成する。
証明書テンプレートのプロパティが表示される。互換性はデフォルトでよい。
特にWindowsXPなどが残っている場合に下位互換性が確保できるからだ。

「全般」タブを開き、テンプレート名を変更する。ここでは、「ユーザ証明書の自動発行」としておく。
「有効期間」は証明書の有効期間、「更新期間」は有効期限が切れるどのくらい前に更新を行うかの設定である。

「要求処理」タブでは、秘密キーのエクスポート(取り出し)のチェックをはずしておこう。
秘密キー(秘密鍵)が第三者に漏れてしまうと、なりすましができてしまうからだ。

「サブジェクト名」タブでは、「サブジェクト名に電子メール名を含める」と「電子メール名」のチェックをはずしておく。ADで電子メールアドレスが登録されていないと、証明書の自動発行が失敗してしまうからだ。

「セキュリティ」タブで、「Domain Users」に読み取りの許可と自動登録の許可を与える。
この設定を行うことで、Domain Users、つまりADの全ユーザがこのポリシーを使った証明書の自動発行の許可を受ける。

ここまでの設定が終わったら、「適用」「OK」を押して保存する。
(3)証明書テンプレートの発行
ここでは(2)で作った証明書テンプレートを発行(有効化)する。
「証明機関」の「証明書テンプレート」を右クリックし、「新規作成」「発行する証明書テンプレート」を選択する。

「証明書テンプレートの選択」で、(2)で作成したテンプレート(ここでは、「ユーザ証明書の自動発行」)を選択し、「OK」を押す

「証明機関」の「証明書テンプレート」で、「ユーザ証明書の自動発行」のテンプレートが表示されるのを確認。

証明書テンプレートの作業はここまでである。
(4)グループポリシーオブジェクト(GPO)の割り当て
証明書テンプレートの作成だけでは、まだ証明書の自動配布はできない。自動配布を行うADのオブジェクト(ドメイン全体、OU、サイトなど)に対して、GPOを使って証明書自動配布のポリシーを割り当てる必要がある。
「管理ツール」から「グループポリシーの管理」を起動する。

GPOを割り当てるオブジェクト(ここではドメイン全体)で右クリックし、「このXXにGPOを作成し、このコンテナーにリンクする」を選択する。

GPO名を入力する。ここでは「ユーザ証明書の自動配布」とする。

「グループポリシーの管理」ツールで、先ほど作ったGPOが表示されるので、右クリックして「編集」を選択する。

「グループポリシー管理エディタ」で、「ユーザの構成」→「ポリシー」→「Windowsの設定」→「セキュリティの設定」→「公開キーのポリシー」を選択する。
右ペインに「証明書サービスクライアント」が出てくるので、ダブルクリックする。

構成モデルを「未構成」から「有効」に変更し
・有効期限が切れた証明書を書き換え、保留中の証明書を更新、および執行した証明書を削除する
・証明書テンプレートを使用する証明書を更新する
の2つにチェックを入れる

適用を押して、設定は完了である。
コマンドラインを起動し「gpupdate」コマンドを実行しておく。このコマンドで、GPOはドメインに即時反映される。
(5)確認方法
クライアントPCでActiveDirectoryにログオンし、「certmgr.msc」(証明書管理ツール)を確認する。
ユーザ証明書が発行できていれば、「個人」のところに証明書があるはずだ。

また、サーバ側の「証明機関」管理ツールの、「発行した証明書」のところにも、発行したユーザ証明書が表示されているはずである。

もしうまく発行できない場合、イベントビューアで確認すると失敗の理由が表示されていることもある。
前提条件:
・WindowsServer2012で、ActiveDirectoryの設定が終わっていること。
・WindowsServer2012で、証明機関のインストールと構成が終わっていること。
(1)「管理ツール」から「証明機関」を起動

(2)証明書テンプレートを作成する。
左ペインから「証明書テンプレート」を右クリックして「管理」を選択

テンプレート「ユーザ」を右クリックし、「テンプレートの複製」を選択。

「ユーザ」テンプレートを複製し、ユーザに証明書を自動配布するテンプレートを作成する。
証明書テンプレートのプロパティが表示される。互換性はデフォルトでよい。
特にWindowsXPなどが残っている場合に下位互換性が確保できるからだ。

「全般」タブを開き、テンプレート名を変更する。ここでは、「ユーザ証明書の自動発行」としておく。
「有効期間」は証明書の有効期間、「更新期間」は有効期限が切れるどのくらい前に更新を行うかの設定である。

「要求処理」タブでは、秘密キーのエクスポート(取り出し)のチェックをはずしておこう。
秘密キー(秘密鍵)が第三者に漏れてしまうと、なりすましができてしまうからだ。

「サブジェクト名」タブでは、「サブジェクト名に電子メール名を含める」と「電子メール名」のチェックをはずしておく。ADで電子メールアドレスが登録されていないと、証明書の自動発行が失敗してしまうからだ。

「セキュリティ」タブで、「Domain Users」に読み取りの許可と自動登録の許可を与える。
この設定を行うことで、Domain Users、つまりADの全ユーザがこのポリシーを使った証明書の自動発行の許可を受ける。

ここまでの設定が終わったら、「適用」「OK」を押して保存する。
(3)証明書テンプレートの発行
ここでは(2)で作った証明書テンプレートを発行(有効化)する。
「証明機関」の「証明書テンプレート」を右クリックし、「新規作成」「発行する証明書テンプレート」を選択する。

「証明書テンプレートの選択」で、(2)で作成したテンプレート(ここでは、「ユーザ証明書の自動発行」)を選択し、「OK」を押す

「証明機関」の「証明書テンプレート」で、「ユーザ証明書の自動発行」のテンプレートが表示されるのを確認。

証明書テンプレートの作業はここまでである。
(4)グループポリシーオブジェクト(GPO)の割り当て
証明書テンプレートの作成だけでは、まだ証明書の自動配布はできない。自動配布を行うADのオブジェクト(ドメイン全体、OU、サイトなど)に対して、GPOを使って証明書自動配布のポリシーを割り当てる必要がある。
「管理ツール」から「グループポリシーの管理」を起動する。

GPOを割り当てるオブジェクト(ここではドメイン全体)で右クリックし、「このXXにGPOを作成し、このコンテナーにリンクする」を選択する。

GPO名を入力する。ここでは「ユーザ証明書の自動配布」とする。

「グループポリシーの管理」ツールで、先ほど作ったGPOが表示されるので、右クリックして「編集」を選択する。

「グループポリシー管理エディタ」で、「ユーザの構成」→「ポリシー」→「Windowsの設定」→「セキュリティの設定」→「公開キーのポリシー」を選択する。
右ペインに「証明書サービスクライアント」が出てくるので、ダブルクリックする。

構成モデルを「未構成」から「有効」に変更し
・有効期限が切れた証明書を書き換え、保留中の証明書を更新、および執行した証明書を削除する
・証明書テンプレートを使用する証明書を更新する
の2つにチェックを入れる

適用を押して、設定は完了である。
コマンドラインを起動し「gpupdate」コマンドを実行しておく。このコマンドで、GPOはドメインに即時反映される。
(5)確認方法
クライアントPCでActiveDirectoryにログオンし、「certmgr.msc」(証明書管理ツール)を確認する。
ユーザ証明書が発行できていれば、「個人」のところに証明書があるはずだ。

また、サーバ側の「証明機関」管理ツールの、「発行した証明書」のところにも、発行したユーザ証明書が表示されているはずである。

もしうまく発行できない場合、イベントビューアで確認すると失敗の理由が表示されていることもある。