Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Not all browsers perform revocation checking

2025年09月15日に「Hacker News」が公開したITニュース「Not all browsers perform revocation checking」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Webブラウザの中には、Webサイトのセキュリティ証明書が失効していないか確認しないものがある。これにより、危険なサイトに繋がる恐れも。Webを安全に使うには、ブラウザの失効チェック機能が大切だ。

ITニュース解説

インターネット上での情報のやり取りには、安全性が非常に重要だ。私たちが普段利用するWebサイトでは、HTTPSという仕組みを使って通信の安全を確保している。HTTPSは、Webサイトが本物であることを証明し、送受信されるデータが盗聴されたり改ざんされたりしないように暗号化する役割を担う。この安全性を支えているのがデジタル証明書だ。デジタル証明書は、Webサイトの運営元が確かにその企業や個人であることを証明する、いわばインターネット上の身分証明書のようなものだ。

この証明書は、認証局(CA)という信頼できる第三者機関によって発行される。ブラウザは、認証局が信頼できるかどうかのリスト(ルート証明書と呼ばれる)をあらかじめ持っていて、Webサイトから提示された証明書がその認証局によって正しく発行されたものかを検証する。この検証が成功して初めて、ブラウザはそのWebサイトとの通信を安全とみなし、URLバーに鍵マークを表示するのだ。

しかし、一度発行された証明書が永久に有効というわけではない。Webサイトの秘密鍵が外部に漏洩してしまったり、証明書が誤って発行されてしまったり、Webサイトの運営元が変わったりといった理由で、その証明書が無効になる必要が生じることがある。このような場合、その証明書は「失効」される。失効した証明書は、もはやそのWebサイトが信頼できることを保証しないため、ブラウザは失効した証明書を持つWebサイトへのアクセスを警告したり、ブロックしたりする必要がある。この失効した証明書を正しく認識し、適切な対応を取ることを「証明書失効チェック」と呼ぶ。

ブラウザが証明書が失効しているかどうかを確認する主な方法には、CRL(Certificate Revocation List:証明書失効リスト)とOCSP(Online Certificate Status Protocol:オンライン証明書状態プロトコル)の二つがある。CRLは、認証局が発行した失効済み証明書のリストを定期的に公開し、ブラウザはそのリストをダウンロードして照合する。しかし、このリストは時間とともに大きくなる可能性があり、頻繁にダウンロードすることにはパフォーマンス上の課題が生じる。一方、OCSPは、ブラウザがリアルタイムで認証局に証明書の状態を問い合わせることで、その証明書が現在有効なのか、それとも失効しているのか、またはまだ有効期限前なのかといった情報を取得する。これはCRLよりも新しい情報が得られる利点があるが、問い合わせのたびに認証局への通信が発生するため、通信速度が低下したり、ブラウザのアクセス履歴が認証局に知られる可能性があったりといった課題がある。

そこで登場したのがOCSP Staplingという技術だ。これは、Webサーバーが自ら定期的に認証局からOCSPの応答を取得し、その応答をデジタル証明書と「一緒にホチキス留め(Stapling)」してブラウザに送る仕組みだ。これにより、ブラウザは認証局に直接問い合わせる必要がなくなり、通信速度が向上し、ユーザーのプライバシーも保護される。

しかし、本記事のタイトル「Not all browsers perform revocation checking(すべてのブラウザが失効チェックを行うわけではない)」が示す通り、すべてのブラウザがこれらの失効チェックを同じように、または完全に実行するわけではない。ブラウザの開発元は、セキュリティとパフォーマンス、そしてユーザー体験とのバランスを考慮して、それぞれ異なる実装を行っている。例えば、CRLはリストが大きくなりがちで、ダウンロードに時間がかかるため、常に最新のリストを保持することが難しい場合がある。OCSPも、認証局への問い合わせがタイムアウトしたり、応答が得られなかったりすると、ブラウザがどう判断すべきかという問題が生じる。一部のブラウザは、失効チェックの失敗を致命的なエラーとは見なさず、接続を継続してしまうことがある。これは、Webサイトのサービス提供を優先するためであったり、失効チェック自体がネットワークの問題などで不安定になる可能性を考慮しての判断であったりする。

今回参照しているLet's Encryptのテストページ(https://revoked-isrgrootx1.letsencrypt.org/)は、具体的に失効した中間証明書を持つサイトに対して、各ブラウザがどのように振る舞うかを示すためのものだ。このページにアクセスしたときに、ブラウザが警告を表示したり、接続をブロックしたりすれば、そのブラウザは正しく失効チェックを行っていると判断できる。しかし、もし何事もなくページが表示されてしまった場合、そのブラウザは失効した証明書を認識できていないか、認識しても何らかの理由で接続を許可してしまっている可能性を示唆している。これは、ユーザーが危険なWebサイトに接続してしまうリスクを意味するため、非常に重要な問題だ。

システムエンジニアを目指す皆さんにとって、このようなセキュリティの仕組みを深く理解することは極めて重要だ。Webサイトのセキュリティは、単に証明書を導入すれば終わりという単純なものではなく、証明書が失効した場合の挙動や、それをチェックするブラウザ側の実装状況まで含めて考慮する必要がある。ブラウザのバージョンや設定によっても挙動が変わる可能性があるため、セキュリティは常に変化し続ける複雑な分野であることを認識し、継続的に学習し、最新の情報を追いかける姿勢が求められる。ユーザーが安心してインターネットを利用できるよう、セームレスかつ堅牢なセキュリティシステムを構築するためには、技術的な深い知識と実践的な検証が不可欠となる。

関連コンテンツ