Webサイトなどを構築する上で「暗号化」は基本的な要素の一つとなります。暗号化には「SSL/TLS」というプロトコルを利用していますが、この技術が利用されているかどうかはブラウザのアドレスバーに「https」が表示されているかによって判別できます。
SSL/TLSでは、ブラウザとWebサーバー間で安全な通信を行うために通信データの暗号化を施しますが、その際、暗号鍵がブラウザとサーバー間で共有されます。暗号鍵の交換は非常に複雑であり、すべての仕組みを説明することは難しいですが、端的に言えば「WebサーバーのSSL/TLS証明書による鍵の共有」が行われます。
証明書には、いくつかの情報が含まれていますが、その一つに「証明書の有効期限」があります。一般的に1~2年の期限が設定されているのですが、この期限を迎える前に、サイバー攻撃で盗み出されるケースがあります。盗み出された場合、証明書を失効させることでセキュリティリスクを回避しますが、新しい証明書を作成した時、ブラウザ側はどのようにして証明書が失効したことを認識するのでしょうか。
CRLとOCSPの魔法
SSL/TLSによってセキュリティが担保されたWebサイトを訪問すると、Webサイトからブラウザへ証明書が送られます。証明書のやり取りはPCに大きな負担をかけるため、ブラウザが証明書を繰り返し要請しなくて済むよう、過去に訪問したWebサイトの証明書情報をキャッシュしています。
キャッシュによってWebサイトの読み込みが速くなるものの、証明書が失効している場合は問題が発生します。そこで、証明書が有効か確認する手段として、Certificate Revocation List(CRL)と呼ばれる概念が生まれました。CRLは、証明書を作成・配付する「認証機関」によって作成されるファイルであり、認証機関が失効させた証明書のシリアルナンバーが記載されています。
ブラウザはCRLをダウンロードして、Webサイトのシリアルナンバーと照会しますが、証明書が失効している場合はブラウザによって、「証明書が失効している」旨の警告ページが表示されます。
CRLによる確認は、ブラウザが証明書を確認するたびにCRLをダウンロードし、証明書のシリアルナンバーをCRL内で検索します。ただ、証明書の確認は頻繁に行われる上に、CRLはファイルサイズが大きくなりやすく、検索などでPCに負荷がかかります。
そこで、ブラウザによってはCRLを一定の期間キャッシュし、検索に用いるケースがあります。この手法は高速化に寄与するものの、キャッシュ後にCRLが変更された場合は参照できない恐れがあります。
こうした諸問題を解決するために開発されたプロトコルが「Online Certificate Status Protocol(OCSP)」です。OCSPは、失効した証明書のシリアルナンバーのオンラインデータベースを検索するソリューションとして、1999年に開発されました。
証明機関は、CRLファイルを持つ代わりにOCSPサーバー(OCSPレスポンダ)を構築し、発行した証明書内にOCSPサーバーURLを保存します。OCSPに対応したクライアントはデータベースを検索し、「証明書が失効していないか」を確認できます。ファイルをダウンロードすることなく有効/失効が確認可能であるため、CRLと比較して効率の良い手段となります。
CRLとOCSPの確認方法
下のキャプチャは、f5.comが発行する証明書の概要です。証明書はEntrust Certification Authorityによって発行されており、CRLファイルとOCSP検索に使用するシリアルナンバーのリストが管理されています。
下記左のキャプチャはf5.comの証明書の詳細で、CRLの場所が記載されています。ブラウザがEntrustからCRLをダウンロードする際には、このURLが使用されます。このCRLは、Entrustが管理しているCRLのひとつで、CRLが置かれているURLを訪問した際に得られた詳細が右のキャプチャになります。CRLにはシリアルナンバーや失効した日付、失効の理由が記載されていることがわかります。
一方で下のキャプチャは、f5.comの証明書のうち、OCSPの部分を示しています。画面下部にある詳細セクションに記載されているURL(赤い矢印部分)で、失効したシリアルナンバーのデータベースと現在の証明書のシリアルナンバーを対比することになります。
次回は、現時点で利用できる3種類の証明書「Domain Validation(DV)」と「Organization Validation(OV)」「Extended Validation(EV)」の説明と、証明書の失効に対して主要ブラウザがどのように対応しているのか、解説します。
著者プロフィール
伊藤 悠紀夫(いとう ゆきお)
UNIXサーバ、ストレージ、シン・クライアントといったインフラエンジニアを経て、F5ネットワークスジャパンへ2012年に入社。
F5ネットワークスジャパン
セールスエンジニアリング本部
プリセールスコンサルタント
現在はセキュリティ・クラウドをキーワードにイベント講演やハンズオンラボを行い、F5ソリューションの啓蒙活動に奮闘中。
最近はOpenStackやIoTといったキーワードを中心に連携ソリューションを模索している。