事象
仮想環境の検証環境において、Active Directory 証明書サービスを利用して構築した証明機関した仮想マシンがあるとします。
証明機関を構築している仮想マシンをスナップショットを採取したタイミングに戻った場合、その証明機関から証明書を発行する場合、以下のエラー メッセージが表示されて証明書の発行に失敗することがあります。
失効サーバーがオフラインのため、失効の関数は失効を確認できませんでした。
0x80092013 (-2146885613 CRYPT_E_REVOCATION_OFFLINE)
発行要求を行った証明機関の管理コンソール(certsrv)から、[失敗した要求] を確認すると、証明書の発行要求に失敗したことが確認できます。
エラー コードは以下の通りです。
要求の状態コード:
失効サーバーがオフラインのため、失効の関数は失効を確認できませんでした。 0x80092013 (-2146885613 CRYPT_E_REVOCATION_OFFLINE)
要求のディスポジション メッセージ:
証明書の構築または公開中にエラーが発生しました
原因
証明機関を構築している仮想マシンをスナップショットから戻すと、証明書失効リスト(CRL) の有効期間はスナップショットを採取したタイミングとなります。
Active Directory 証明書サービスでは、CRL の有効期間は既定で 1 週間となっておりますのが(Delta CRL の有効期間は既定で 1 日)、証明書の発行要求を行っている端末のシステム時刻は現在の時間となっており、証明機関の CRL の有効期間を過ぎた状態となります。
証明書の登録ウィザードから証明書の発行要求を行う時、要求先の証明機関が公開している CRL の有効期限が切れている場合、有効な CRL を取得できない状態となり、証明書の発行に失敗します。
解決策
解決方法としては、証明機関で CRL の更新して、CRL の有効期間を現在の時間に合わせて更新することです。
CRL の更新は certsrv の管理コンソールから手動で更新する方法(対処策 A)と、証明書サービスを再起動する方法(対処策 B)です。
対処策 A
証明機関の管理コンソール(certsrv)から、手動で CRL を更新して有効期間を引き延ばします。
1) 証明機関を構築している Windows サーバーに管理者権限をもつユーザーでログオンします。
2) [Windows 管理ツール] から [証明機関] を開きます。
3) 画面の左ペインより、[証明機関(ローカル)] – [<CA 名>] – [失効した証明書] を右クリックして、[全てのタスク] – [公開] をクリックします。
4) [CRL の公開] にて、[新しい CRL] を選択した状態で [OK] をクリックします。
対処策 B
Active Directory 証明書サービスを再起動すると、サービスが起動したタイミングにて CRL が自動で更新されます。
Active Directory 証明書サービスの再起動は、certsrv の管理コンソールから行う方法と、コマンド プロンプト(もしくは powershell) で行う方法の 2 通りがあります。
certsrv 管理コンソールから再起動
1) 証明機関を構築している Windows サーバーに管理者権限をもつユーザーでログオンします。
2) [Windows 管理ツール] から [証明機関] を開きます。
3) 画面の左ペインより、[証明機関(ローカル)] – [<CA 名>] を右クリックして、[全てのタスク] – [サービスの停止] をクリックします。
4) Active Directory 証明書サービスが停止したら、画面の左ペインより、[証明機関(ローカル)] – [<CA 名>] を右クリックして、[全てのタスク] – [サービスの開始] をクリックします。
コマンド プロンプトから再起動
1) 管理者権限でコマンド プロンプトを開きます。
2) 以下のコマンドを実行して、Active Directory 証明書サービスを再起動します。
net stop certsvc && net start certsvc
参考情報
証明機関の CRL の有効期間や公開情報は certsrv 管理コンソールから確認できます。
確認手順は以下の通りです。
1) 証明機関を構築している Windows サーバーに管理者権限をもつユーザーでログオンします。
2) [Windows 管理ツール] から [証明機関] を開きます。
3) 画面の左ペインより、[証明機関(ローカル)] – [<CA 名>] – [失効した証明書] を右クリックして、[全てのタスク] – [公開] をクリックします。
4) [失効した証明書のプロパティ] が表示されたら、[CRL の表示] をクリックします。
上の画面から、CRL の有効期限、CDP への公開の状態を確認できます。
有効期限が現在の時間から切れていないこと、また、公開の状態が “OK” となっていることを確認します。