ページ読み込みの最適化:OCSPステープリング

概要

ユーザーがHTTPS Webサイトにアクセスすると、正常に機能して応答する必要があります 公開鍵、および個人、会社、組織などのIDにキーを関連付ける有効なSSL証明書。 証明書は常に、署名済み証明書自体に含まれている事前定義の有効期限で発行され、ブラウザーは常に有効期限を確認し、期限切れの証明書を拒否します。

ただし、場合によっては、証明書に無効のマークを付ける必要があります(これらの証明書に対する信頼は 取り消された) 期限切れです。 一般的な例には、サーバーの所有者が含まれます。これには、プライベートキーが侵害された(つまり、紛失、盗難、または破壊された)証拠がある(または疑わしい)場合があります。このプライベートキーを保持しているサードパーティは、すべてのブラウザーネットワークセキュリティコントロールを本質的にバイパスできるためです。

結果として、ブラウザベンダーは 公に信頼される 認証局 (CA)問題のある証明書を取り消す方法と、これらの取り消された証明書を拒否するようにブラウザに通知する方法の少なくともXNUMXつを実装します。

失効した証明書に起因するブラウザのエラーメッセージの例については、次を参照してください。 このガイド。 証明書の失効ステータスは、次の場所で確認できます Certificate.revocationcheck.com.

失効チェック(の問題)の簡単な履歴

SSLの初期の頃、CAが使用していた方法は、証明書の失効ステータスを、 証明書失効リスト (CRL)。 CRLは、CAが期限切れ前に取り消されたすべての証明書のリストです。 CAは定期的に最新バージョンのCRLを公開しましたが、ブラウザはこれを参照する必要がありました。 各HTTPS接続。

当然、HTTPS(およびSSL /TLS)採用は年々増加し、公開されたCRLのサイズも増加しました。 各接続の前に大きなCRLをダウンロードして解析する必要があるという要件により、ネットワークのオーバーヘッドが増え続けています。 CRLメソッドが適切に拡張できないことがすぐに明らかになりました。

これらのスケーリングの問題を軽減するために、ブラウザとCAは、 オンライン証明書ステータスプロトコル (OCSP)。 次のような公的に信頼されたCA SSL.com、というシンプルなHTTPサーバーを維持する OCSPレスポンダー。 ブラウザはCRL全体を取得して処理する代わりに、レスポンダに連絡して、CAが発行した単一の証明書の失効ステータスを要求できるようになりました。

OCSPレスポンダは、CAの秘密署名キーで応答に署名します。ブラウザは、受け取った失効ステータスが実際のCAによって生成されたものであることを確認できます。

残念ながら、最初はOCSPが効果的なソリューションのように見えましたが、新しいプロトコルにはいくつかの実用的なパフォーマンス、セキュリティ、プライバシーの問題があることが証明されています。

パフォーマンスの問題

ブラウザーが遭遇するすべての証明書についてレスポンダーに連絡することは、ブラウザーが新しいHTTPS接続ごとに追加のHTTP要求を実行する必要があることを意味します。 このネットワークオーバーヘッドは、特にリモートコンテンツ配信サーバー(それぞれにXNUMXつ以上の証明書が設定されている可能性があります)に格納されているサードパーティコンテンツを含むページで、ユーザーに知覚されました。

反応性 優れたユーザーインターフェイス設計の基本原則です。 長い遅延はユーザーの不満の主な原因となる可能性があり、Webサイトが機能していない、または入力ジェスチャーが無視されたとユーザーに思わせる可能性があります。

さらに、多くの 研究 過去には、ページの読み込み速度と応答性が向上し、SEOが向上し、コンバージョン率が向上しました。 実際、AmazonはわずかXNUMX秒の遅延で約コストがかかると計算しています $1.6 十億 毎年。

(ページの読み込み速度がWebサイトに与える影響と推奨される最適化の詳細については、 記事 Webサイトから混合コンテンツを削除すると、パフォーマンスがどのように向上するかを説明します。)

セキュリティの問題

OCSPには、セキュリティに関する重要な問題もあります。 実用的なOCSP実装の大部分が(ネットワークラグ、または構成またはアプリケーションのエラーにより)十分に信頼性がなかったという事実は、ブラウザやその他のクライアントソフトウェアにOCSPチェックを実装する動機を与えました ソフトフェイル モード。

つまり、OCSPサーバーに応答できないか、応答をタイムアウトしている場合、ブラウザーは 証明書を有効と見なす とにかくHTTPS接続を続行します。

この理由は、OCSPサーバーは数百万のWebサイトにサービスを提供できる可能性があり、OCSPサーバーがいつでも障害を起こす可能性があるため、OCSPの障害が発生するたびに接続を切断すると、数百万のユーザーのブラウジングエクスペリエンスが妨げられるためです。 OCSPサーバーは動作しているが応答に時間がかかる場合でも、これは知覚される遅延とユーザーの不満を増大させます。

中間者(MITM) 攻撃者はこの動作をブロックすることで悪用することが知られています OCSPレスポンダへの接続。これは、証明書の失効ステータスに関係なく、悪意のあるサイトで盗まれた証明書とキーペアを使用できることを意味します。

プライバシーに関する問題

最後に、証明書はキーとドメイン名にリンクされており、ブラウザーは新しいHTTPS接続の前に失効ステータスを要求するため、ブラウザーはユーザーのWeb履歴のかなりの部分をOCSPレスポンダーにリークします。

もちろん、公的に信頼されているCAは、ユーザーのプライバシーを侵害しようとする悪意のある組織ではありません。 (評判の良いCAは常に積極的に 守る ユーザーのセキュリティとプライバシー。)ただし、CAのOCSPレスポンダーが侵害された場合、その信頼されていないサーバーと交換されたデータは機密情報や個人情報の漏洩につながる可能性があります。

OCSPのホチキス止めで救出

これらの問題を軽減するために、ブラウザーとCAは、証明書のステータスを判別する新しい方法を考案しました。 OCSP Stapling。 OCSPステープリングにより、(ブラウザーの代わりに)Webサーバーは、証明書の署名済みOCSP応答を取得できます。これは、最大7日間キャッシュできます。

サーバーには(または ステープル)SSL証明書自体と一緒に、HTTPS応答にキャッシュされたOCSP応答。 このようにして、ブラウザーはOCSP応答のCA署名を検証し、安全な接続が確立される前に、OCSPサーバー自体に高価な追加要求を実行する必要なく、証明書が取り消されていないことを確認できます。

OCSPステープリングは、上記の問題に対するシンプルですが非常に効果的なソリューションです。 サーバーは自分の時間内にキャッシュされたOCSP応答を取得できます。これにより、CRLとOCSPによって課せられるパフォーマンスのオーバーヘッドと、付随するプライバシーの問題が取り除かれます。

ただし、OCSPステープリングだけでは、OCSPのソフトフェイルセキュリティの問題は完全には解決されません。 ステープルはサーバーに実装されているため、ブラウザーはサーバーが実際にステープルをサポートしているかどうかを知ることができません。

結果として、盗まれた(ただし、取り消された)証明書を持つMITM攻撃者は、OCSPステープリングなしで証明書を提供することにより、ダウングレード攻撃を実行できます。 被害者のブラウザは、サーバーが実際にステープルをサポートしているかどうかを確認できず、通常どおりにOCSPレスポンダにクエリを実行できません。

MITM攻撃者は、このOCSPクエリを単純にブロックして、ブラウザに証明書を有効なものとして受け入れさせることができます。

OCSPマストステープル

この攻撃により、CAとブラウザベンダーはSSL証明書の拡張機能を導入しました。 RFC 7633一般的に呼ばれる OCSP 必需品 (ただし、RFC自体はこの名前について言及していないため、混乱を招く可能性があります。)これは単に、証明書のOCSPステープルを義務付けるものです。 ブラウザーが、OCSP Staplingなしで使用されるこの拡張機能を持つ証明書を検出した場合、その証明書は拒否されます。 OCSP Must-Stapleは、前述のダウングレード攻撃を軽減し、CAのOCSPレスポンダーへの不要なトラフィックも削減するため、全体的なOCSPパフォーマンスの向上にも役立ちます。

証明書でOCSPMust-Staple拡張機能を有効にすることに関心がある場合は、次のサポートエージェントのいずれかに連絡してください。 support@ssl.com のガイドをご参照ください。

サーバーでOCSPステイプルを有効にする

これを調べる手間を省くために、次のセクションでは、OCSPステープリングを有効にする方法について説明します。 アパッチ および nginx 環境:

アパッチ

でOCSPステープルを有効にするには アパッチ サーバー、サーバーの構成ファイルに次の行を追加してください。

#OCSPステイプル、httpd 2.3.3以降でのみSSLStaplingResponderTimeoutのSSLUseStapling 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/ var / run / ocsp(128000)

nginx

でOCSPステープルを有効にするには nginx サーバー、サーバーの構成ファイルに次のテキストを追加してください。

#OCSP Stapling ---#URLからOCSPレコードをssl_certificateでフェッチし、ssl_staplingにキャッシュします。 ssl_stapling_verify on;

まとめ

Webは相互に依存するコンポーネントの複雑なネットワークであり、すべてが(通常)調和して動作し、シームレスなブラウジングエクスペリエンスを提供します。 ただし、このシステムはますます複雑になっているため、攻撃対象が広がり、新しいネットワーク攻撃を考案して実行することができます。

コンポーネントの数が膨大になると、当然レイテンシが増加し、遅延が発生します。つまり、企業は、ユーザーエクスペリエンスに影響を与えずにセキュリティを向上させる方法を見つける必要があります。 OCSPステープリングを有効にすると、セキュリティを向上させる機会が得られます および 同時にあなたのウェブサイトのパフォーマンス。

いつものように、OCSPのホチキス止めやその他の問題に関する質問にお答えします。 support@ssl.com.

SSL.comのニュースレターを購読する

SSL.comからの新しい記事と更新をお見逃しなく

常に最新情報を入手して安全を確保

SSL.com サイバーセキュリティの世界的リーダーであり、 PKI そしてデジタル証明書。サインアップして、最新の業界ニュース、ヒント、製品のお知らせを受け取ります。 SSL.com.

フィードバックをお待ちしております

アンケートにご協力いただき、最近のご購入についてのご意見をお聞かせください。