証明書の失効:OCSP・CRL・ステープリング
秘密鍵の盗難・誤発行・サービス廃止などで、有効期限の前に証明書を無効化したいことがあります。失効(revocation) はCAが「この証明書はもう信頼するな」と伝える仕組みで、2つの方式+1つの最適化があります。
CRL と OCSP
| 方式 | 仕組み | 欠点 |
|---|---|---|
| CRL | CAが失効したシリアル番号の署名付きリストを公開、クライアントが取得 | リストが肥大化・数時間キャッシュ |
| OCSP | クライアントがCAのレスポンダに1証明書ずつリアルタイム照会 | 遅延+プライバシー(CAに閲覧先が見える) |
どちらも証明書内に参照があります(CRL配布ポイント、AIAの「OCSP URI」)。
OCSPステープリングとMust-Staple
OCSPステープリング はOCSPの遅延とプライバシー問題を解決します。サーバが署名・時刻付きのOCSP応答を取得し、TLSハンドシェイクに「ステープル(添付)」するため、クライアントはCAに接続しません。Must-Staple は有効なステープル応答を必須にする証明書フラグで、OCSPレスポンダに到達できないときブラウザが証明書を受け入れてしまう「ソフトフェイル」の隙を塞ぎます。
現実
ブラウザの失効確認は一貫性に欠けることで有名で、多くがソフトフェイルのため、確認が完了できないと失効済み証明書でも受理されることがあります。これは証明書の有効期間が短縮され続ける理由の一つです。短命な証明書は、失効より確実に悪用の窓を狭めます。証明書の有効期限を確認する を参照。
サーバのOCSP状態・ステープリング・チェーンは、エスロジカルの SSL詳細チェッカー で確認できます。当サイトの基本 SSL/TLSチェッカー は有効期限とチェーンを扱います。背景: 証明書チェーン。
メモ: ステープリングはOCSP取得をサーバ側に移すため、監視が必要です。古い/失敗した応答をステープルするサーバは、Must-Stapleを強制するクライアントを壊すことがあります。