証明書の失効
失効は、有効期限が残っている 証明書 を、それ以降は信頼しない状態にすること。
失効が必要になる例
Section titled “失効が必要になる例”- 秘密鍵 が漏えいした
- 証明書の内容が誤っていた
- サーバーや利用者が廃止された
- CAが証明書を不正発行した
- CA自身の秘密鍵が漏えいした
証明書ファイル自体を書き換えて無効化することはできない。 CA が失効状態を公開し、検証側がその情報を確認する。
有効期限との違い
Section titled “有効期限との違い”| 状態 | 意味 |
|---|---|
| 期限切れ | notAfter を過ぎたため無効 |
| 失効 | 有効期間内だが、CAが無効として登録 |
失効は、有効期限まで待てない問題が発生した場合に使用する。
CRL(Certificate Revocation List)は、CAが失効させた証明書のシリアル番号などをまとめ、CAまたはCRL Issuerが署名したリストである。
主な情報:
- CRLのIssuer
thisUpdatenextUpdate- 失効した証明書のシリアル番号
- 失効日時
- 失効理由
- CRLの署名
CRLは一定間隔で更新されるため、検証側が古いCRLを使用すると最新の失効状態を確認できない。
OCSP(Online Certificate Status Protocol)は、特定の証明書の状態をOCSP Responderへ問い合わせる方式である。
代表的な応答状態:
| 状態 | 意味 |
|---|---|
good |
失効として記録されていない |
revoked |
失効している |
unknown |
Responderが状態を判断できない |
CRLが失効一覧を取得する方式であるのに対し、OCSPは証明書ごとに状態を問い合わせる。
OpenSSLでの失効管理
Section titled “OpenSSLでの失効管理”openssl ca は、発行済み証明書と失効状態を index.txt で管理する。
証明書を失効させる:
openssl ca \ -config ca.cnf \ -revoke server.crtCRLを生成する:
openssl ca \ -config ca.cnf \ -gencrl \ -out ca.crlCRLの内容を確認する:
openssl crl \ -in ca.crl \ -text \ -noout検証時の注意
Section titled “検証時の注意”証明書チェーン の署名検証に成功しても、失効確認を行っていなければ、その証明書が失効しているかどうかは判断できない。
openssl verify でCRLを確認する例:
openssl verify \ -CAfile root.crt \ -untrusted intermediate.crt \ -CRLfile intermediate.crl \ -crl_check \ server.crt失効確認の方法や失敗時の扱いは、TLSクライアントやアプリケーションごとに異なる。
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”-
openssl-ca 証明書の失効とCRL生成。
-
openssl-crl CRLの表示と変換。
-
openssl-verify CRLを使用した証明書検証。