Windows 証明書の自動登録の内部動作

  • 2020年12月31日
  • 2021年4月20日
  • AD CS

Windows の証明書の自動登録は、ドメイン内のアカウントに証明書を自動で発行・登録する機能です。

今回は証明書の自動登録の内部動作を紹介します。

トラブルシューティングの際においても具体的な動作を抑えておくと便利です。

 

概要:証明書の自動登録の動作

証明書の自動登録は、証明機関(CA)が証明書を発行し、端末に配布するという動作ではありません。

Windows 端末は OS に既定で存在するタスクが定期的に実行されて、必要な証明書を発行要求するという動作になります。

タスクの実行により証明書が登録されるという動作の部分は異なりますが、”クライアントから証明機関に証明書の発行要求を行っている” という点においては、手動での登録も自動登録も違いはありません。

Windows OS では、以下のタスクが既定で用意されており、トリガーに従って自動で実行されます。

 

タスク

場所 : [Microsoft] – [Windows] – [CertificateServicesClient]
名前 : SystemTask (コンピューター証明書の自動登録)
名前 : UserTask (ユーザー証明書の自動登録)

 

タスクのトリガー

  • アカウントがログオンした時、以降は 8 時間毎
  • グループ ポリシーの変更が適用された時、もしくはグループ ポリシーの強制適用時
  • certutil -pulse 実行時 (SystemTask を実行させるコマンド)
  • certutil -user -pulse 実行時 (UserTask を実行させるコマンド)

 

トリガーが実行されたら、以下の流れで証明書は自動登録されます。

① LDAP クエリ
エンタープライズ CA が公開している全ての証明書テンプレートの情報を LDAP で問い合わせます。

② LDAP 応答
ドメイン コントローラーは証明書テンプレートの情報を LDAP クエリの結果として返します。

③ 証明書ストアの確認
LDAP 応答で返された証明書テンプレートから、”自動登録” が許可されているものを確認します。
クライアントは証明書ストアを確認し、自動登録が許可されている証明書テンプレートを使用して発行された証明書が登録されていないかどうかを確認します。
登録されていなければ、エンタープライズ CA に対して証明書の発行要求を行います。

④ 証明書の発行要求
自動登録が許可されている証明書テンプレートを指定して、証明書の発行要求を行います。

⑤ 証明書の発行
証明書テンプレートを使用して、発行要求を行ったアカウントの証明書を発行します。

⑥ 証明書の登録
エンタープライズ CA から発行された証明書を、証明書ストアに登録します。

 

証明書の自動登録は Windows のタスクを利用した機能となりますので、Windows OS 以外のドメイン端末に対しては証明書の自動登録は行えません。

 

自動登録された証明書の更新

証明書の自動登録の機能を利用して配布した証明書を、継続的に利用できるように更新することもできます。

証明書の自動登録の流れの説明の通り、クライアント端末は “自動登録” のアクセス権が許可されている証明書テンプレートで発行された証明書が、自身の証明書ストアに登録されているかを確認します。
もし、該当する証明書が存在すれば、エンタープライズ CA に証明書の発行要求は行われません。

証明書の有効期間切れなど、自動登録の機能により発行された証明書を更新させる場合は、グループ ポリシーの設定にて、以下のオプションを有効にしておく必要があります。

[有効期限が切れた証明書を書き換え、保留中の証明書を更新、および失効した証明書を削除する]
[証明書テンプレートを使用する証明書を更新する]

 

上記のオプションを有効にしている場合、③ 証明書ストアの確認において、自動登録が許可されている証明書テンプレートで発行された証明書が登録されていても、”更新すべき証明書” とみなされます。

  • 証明書の有効期限が切れている証明書
  • 証明書の有効期限が切れそうな証明書(※1)
  • 失効された証明書

上のいずれかの条件に該当する場合、更新する対象の証明書として、クライアントはエンタープライズ CA に対して証明書の発行要求(=証明書の更新)を行います。

証明書が発行されたら、前の証明書はアーカイブに移動させ、新しい証明書を登録します。
(アーカイブとは、使われなくなった証明書を保存している場所です。)

 

※1:補足情報

更新対象となる “証明書の有効期限が切れそうな証明書” という表現について補足します。

文字通り有効期限が間近な証明書を指しますが、その対象となる期間は証明書テンプレートで設定できます。

 

証明書テンプレートの [更新期間] の項目で、有効期限の何日前から自動更新を行うかを定義できます。
上図の設定値の場合、有効期間の終了日の6週間前から証明書の更新が試行される動作となります。

 

よくあるトラブル

証明書の自動登録で登録された証明書が有効期限間近なのに自動更新されないケースもあります。

証明書の [有効期間] が1年間で、[更新期間] が6週間の場合、終了日の 6 週間(42 日)前から自動更新が試行されるはずですが、更新予定の日から何日か経過しても証明書が更新されないことがあります。

証明書が自動更新されない原因としてよくあるのが、“証明書の有効期間の80%ルール” によるものです。

仮に更新期間で設定された更新日になっても、それが証明書の有効期間の80%を満たさない場合は更新は行われず、有効期間の80%を経過した後に自動更新されるという動作になります。