CRLとOCSP、廃止時の挙動について
Let's EncryptがOCSPの取り扱いを止めると発表しましたね(今更)。
それを見てて気になったんです。
ブラウザって特に設定変えなくても動くのかな?と。
また、認証局が廃止になったときってこれらはどんな動きをするんだ?と。
そもそもCRLとOCSPとは
CRL
Certification Revocation Listの略で、有効期限内に失効したリスト群が載ってます。認証局からこれの最新版を定期的にクライアントに配布します。そして、クライアント側では手元にあるCRLを接続時に検証することで、既に失効した証明書を持つサイトを拒否できる、という仕組みです。
しかしながらリストのサイズが大きく、検索も時間がかかるというデメリットがあります。
OCSP
Online Certificate Status Protocolの略で、接続しようとしている証明書の失効情報をピンポイントで、オンラインにて検証する仕組みです。認証局によってOCSPサーバが用意されていて、そこに問い合わせに行きます。
オンラインにてリアルタイムに確認出来て、クライアント側に負荷がそこまでかからない、ということで近年まで推奨されていました。しかし、認証局側にリソース管理のコストが掛かってしまうことと、問い合わせに行く際にクライアントがアクセスしようとしたサイトの情報が分かってしまうため、個人情報保護の観点からCRLに回帰しようとする動きが広がっています。
ブラウザ君たちの動き
証明書の話が良くかかわるのはブラウザではないでしょうか?なのでブラウザのCRLやOCSPの動きはどうなのか確認してみました。
結論:ものによる。
EdgeとChromeはCRLSetsという独自のCRLを持っていて、それ以外は基本チェックしません。なので、基本は廃止しても動きは変わらないけど、断言できるわけではない、といったところです。また、他のブラウザはちゃんと確認したりします。だからものによる、という結論です。テストはちゃんとしようね。
廃止されたらどうなるの?
CRLの場合
結論:不明。ググってみましたが情報なし……。となれば、やるしかないでしょう。OpenSSLの構築と意図的な廃止。出来たらnoteで報告します。
OCSPの場合
結論:ソフトウェアによるが大抵問題ない。Let's Encryptの声明によればフェールオープン(失敗してもそれをスルーする仕組み)で実装されているソフトウェアが大半らしく、停止しても問題ないだろうとのこと。
以下のサイトはnginxでのOCSP停止時の挙動を上げて頂いてますが(神)、エラーが出てはいるものの実害はなさそうですね。
まとめ
OCSPは廃止した場合の挙動は比較的簡単に検索出来たんですが、CRLを用いている認証局が廃止された場合の挙動は見つかりませんでした。
まあ、普通、新しい認証局に切り替えたり、廃止される認証局側から代替案が提示されると思いますので、「認証局が廃止されるけど代替案はなくて、でも今の証明書そのままにしたいなあ!」っていう展開は超絶レアケースか……