Active Directory Certificate Services(AD CS)を構築し、証明書テンプレートにて有効期間を5年に設定したにもかかわらず、クライアントに配布した証明書の有効期間が5年より短い期間になっていたという事を経験しました。
このようなことが再発しないように、今回、証明書の有効期間を設定する上で必要となる設定項目をご紹介したいと思います。
証明書 有効期間の仕組み
クライアントに配布される証明書の有効期間は以下の3つの設定の内、最も短い期間に設定されます。
【証明書の有効期間を決める設定】
- 証明機関 (Certificate Authority, CA)」の有効期間(ルート証明書の有効期間)
- CAのレジストリ有効期間(ValidityPeriod == Years、 ValidityPeriodUnits == 2 ※規定値)
- 証明書テンプレートの有効期間
例えば、下図のように各有効期間が設定されている場合、クライアントに配布される証明書の有効期間は最も設定値が短い「2. CAのレジストリ有効期間」の2年に設定されます。
そのため、クライアントに配布する証明書の有効期間を5年に設定したい場合は、証明書テンプレートに設定する有効期間とは別に、CAのレジストリ値についても5年以上に設定する必要があります。
尚、下図のようにクライアントに証明書が発行された時点で「2. CAのレジストリ有効期間」および「3. 証明書テンプレートの有効期間」が「1. 証明機関の有効期間」を超えている場合、クライアントに発行された証明書の有効期間終了日は「証明機関の有効期間の終了日」に設定されます。
CAのレジストリについて
上記で記載したCAのレジストリは、証明機関が発行する証明書の有効期間上限値を設定するレジストリであり、AD CSサーバーにて設定を行います。
レジストリの詳細について、以下に記載します。
【有効期間の単位】
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CertSvc\Configuration\<CAName>
- 値:ValidityPeriod
- 値の種類:REG_SZ
- 値データ:Years(規定値)
※値データとしては「Years/Months/Weeks/Days」を設定可能です。
【有効期間の値】
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CertSvc\Configuration\<CAName>
- 値:ValidityPeriodUnits
- 値の種類:REG_DWORD
- 値データ:2(規定値)
※規定値では2年に設定されています。
証明書の有効期間設定手順
実際に証明書の有効期間を5年に設定する手順を紹介したいと思います。
CAのレジストリ設定
1. 「ファイル名を指定して実行」を起動し、「regedit」と入力、「OK」ボタンを押下します。
2. レジストリエディターにて、下記レジストリキーを表示します。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CertSvc\Configuration\<CAName>
3. 「ValidityPeriod」が「Years」に設定されていることを確認します。
4. 「ValidityPeriodUnits」をダブルクリックし、値データを「5」に設定します。
5. コマンドプロンプトを起動し、下記コマンドを順に実行して、Active Directory Certificate Servicesを再起動します。
【コマンド】
>net stop certsvc
>net start certsvc
証明書テンプレートの有効期間設定
1. 証明書機関を起動し、「証明書テンプレート」を右クリック、「管理」を選択します。
2. 証明書テンプレートコンソールにて、証明書のベースとする証明書テンプレートを右クリックし、「テンプレートの複製」を選択します。
3. テンプレートのプロパティ「全般」タブにて、「有効期限」を5年に設定し、「OK」を選択します。
※今回は有効期限の設定のみ行っております。
4. 証明機関にて、「証明書テンプレート」を右クリックし、「新規作成」>「発行する証明書テンプレート」を選択します。
5. 証明書テンプレートの選択にて、先ほど作成した証明書テンプレートを選択し、「OK」をクリックします。
以上にて証明書の有効期限設定については完了です。
本記事を記載するにあたり作成した上記の証明書テンプレートをクライアントで取得し(2024/03/07実施)、有効期限が5年後(2029/03/06)に設定されていることも確認できました。
おわりに
今回、私自身が初めてADCSを構築した際に、困った事象の一つとして証明書の有効期間について紹介させて頂きました。
証明書の有効期限を設定する際には証明書テンプレートに設定する有効期間だけでなく、 証明機関の有効期間や CAのレジストリ有効期間についても考慮する必要があります。
同様の事象でお困りの方のお役に立てれば幸いです。