WindowsServer2016 ADCSでも有効期限延長にレジストリ値のValidityPeriodUnitsの変更が必要

これまで何度か構築したことがありますが、会社内で証明書を気軽に使いたい場合は、Windows Server 2016にて、認証局を構築することができます。最近は仮想化基盤上で、Windowsサーバが構築し放題という環境が多いので、気軽に作成できます。


続いて、Windows Serverで認証局(ADCS)を構築する場合、スタンドアロンCAとエンタープライズCAのどちらかを選択することになりますが、証明書テンプレートの編集ができる為、便宜性からはエンタープライズCAを選択することになります。


そして、エンタープライズCAを導入する場合、証明機関の有効期限に関して、知識が必要です。Windows Server 2016にて、エンタープライズCAをインストール後、サーバー証明書をテンプレートから作成し、例えば有効期限を「5年」で作成し、証明書を発行しても、サーバー証明書の有効期限は「2年」で発行されます。
※上記はルートCA(ルート証明書)の有効期限を5年に設定。デフォルト5年

 


証明書テンプレートの有効期限を「5年」に設定したのに、「2年」で発行されるのには理由があります。エンタープライズCAにおいて、証明書の有効期限を決める要素は以下の3つがあり、その中の最小値が適用されます。

①ルートCAの有効期限
②証明書テンプレートの有効期限
③CAがインストールされたサーバーのレジストリ


例えば、①ルート証明書が「5年」、②証明書テンプレートが「5年」でも、③のレジストリの値が原因で「2年」が適用されます。


つまり、気を付けないといけないのが、デフォルトではレジストリで設定されている値が「2年」であるということです。


証明書テンプレートの有効期限の制限を変更したい場合は、レジストリエディタを開き、以下の場所に移動します。

>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CertSvc\Configuration\


右画面の [ValidityPeriodUnits]の値をデフォルト値から任意の値に変更します。


変更後は、証明書サービスをWindows PowerShell コマンドを実行することで再起動できます。

>restart-service certsvc


これ知らないと確実に想定より、短い期間で証明書の有効期限が切れてしまうので注意が必要です。時間があったらWidows Server 2019でも確認してみたいと思います。おそらく同じ仕様だとは思いますが・・・。