2013年7月11日木曜日

証明書の最長有効期間について

  • このエントリーをはてなブックマークに追加


今日は証明書の最長有効期間についての話をしたいと思います。

certreq.exe –New –f c:\temp\win7.inf c:\temp\win7.req
※win7.infの中身を省略する
※certreqで証明書要求作成、発行について、こちらをご参照ください

certreq.exe –Submit  -q  -f  -config  ca01.test.local\test-ca01-ca   c:\temp\win7.req c:\temp\win7.cer

上記の証明書発行コマンド(Certreq.exe –submit…)をCAサーバー上で実行する時に、以下のようなメッセージが出る場合があります。

テンプレート有効期間が CA が許可する証明書の最長有効期間よりも長いため、証明書の有効期間は <テンプレート名> 証明書テンプレートが指定するよりも短くなります。CA 証明書を更新するか、テンプレートの有効期間を短くするか、レジストリ有効期間を長くしてください

メッセージ自体はエラーではありません。証明書が問題なく生成できます。ただし、作成できた証明書(win7.cer)の有効期限が証明書テンプレートで設定した有効期限と異なります。例えば、テンプレートで10年の有効期間を設定したのに、実際に作成できた証明書の有効期間が2年とか、5年未満になっていることがあります。

原因としては、証明書の有効期間が以下の3つ値と関連しているからです。

1、CAサーバー上のレジストリに設定された期間(既定2年)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA Name>\ValidityPeriod
値:Years

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA Name>\ValidityPeriodUnits
値:2

2、CAサーバーの有効期間

3、証明書テンプレートで設定された有効期間

1が2より、2が3より、優先順位が高いです。

 

例えば、
・2013年1月1日でルートCAサーバーを立てた。「このCAから生成された証明書の有効期間を選択」で5年に設定した。
image

・テンプレート作成で10年に設定した。

この場合、1~3の値は以下となります。
1、レジストリの有効期間が既定で2年
2、CAサーバーの有効期間は5年。(2013/01/01 ~ 2018/01/01)
3、テンプレートでの有効期間は10年。

●2013/06/01の時点でCertreqコマンドで証明書を生成した時に、1の制限が効くので、証明書の有効期間は2年(2013/06/01 ~ 2015/06/01)になる。

●1レジストリの値を10年に設定した場合、2の制限が適用される。有効期間は5年未満(2013/06/01 ~ 2018/01/01)になる。

●2CAの有効期間を15年に構成した場合(CAの有効期間:2013/01/01 ~ 2028/01/01)、3の制限が適用されるので、有効期間は10年(2013/06/01 ~ 2023/06/01)になる。

 

1のレジストリの有効期間の確認と設定はcertutilコマンドでもできます。

※確認
certutil –getreg ca\ValidityPeriod
certutil –getreg ca\ValidityPeriodUnits

※設定
certutil –setreg ca\ValidityPeriodUnits 10

※CertSvcサービスを再起動する

 

参考情報

How to Create Certificates with a Longer Validity Period

この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿