web-dev-qa-db-ja.com

WebブラウザーはSSL証明書をキャッシュしますか?

WebブラウザーはSSLサーバー証明書をキャッシュしますか?たとえば、WebサーバーでSSL証明書を変更した場合、SSL経由で接続すると、すべてのWebブラウザーが新しい証明書を取得しますか、それとも古い証明書が存在する可能性がありますか?

SSL証明書が期限切れになり、Webサーバーで新しい証明書に置き換えられるシナリオを考えています。

27
Lorin Hochstein

まあ、RedGrittyBrickの答えは正しいですが、実際には質問に答えていません。問題は、ブラウザがそれを行うかどうかではなく、すべきであるか、それを行う必要があるかどうかでした。

私が聞いたところによると、MSIEとChromeは実際には証明書をキャッシュします。古いバージョンが有効である限り、新しいバージョンを取得したときにそれらを置き換えないでください。なぜこれを行うのかセキュリティを低下させるため、私には理解できません。

11
tuexss

いいえ。参照 IBM SSLの概要

  1. SSLクライアントは、SSLバージョンなどの暗号化情報と、クライアントの優先順にクライアントがサポートするCipherSuiteをリストする「client hello」メッセージを送信します。メッセージには、後続の計算で使用されるランダムなバイト文字列も含まれます。 SSLプロトコルでは、「クライアントハロー」にクライアントがサポートするデータ圧縮方法を含めることができますが、現在のSSL実装には通常、この規定は含まれていません。

  2. SSLサーバーは、サーバーがSSLクライアントから提供されたリストから選択したCipherSuite、セッションID、および別のランダムバイト文字列を含む「server hello」メッセージで応答します。 SSLサーバーはデジタル証明書も送信します。サーバーがクライアント認証にデジタル証明書を必要とする場合、サーバーは、サポートされている証明書のタイプと受け入れ可能な認証局(CA)の識別名のリストを含む「クライアント証明書要求」を送信します。

  3. SSLクライアントは、SSLサーバーのデジタル証明書のデジタル署名を検証し、サーバーが選択したCipherSuiteが受け入れ可能であることを確認します。

Microsoftの要約 も同様です。 TLSハンドシェイクもこの点で似ています。

手順2では、クライアントが「サーバー証明書を送信しないで、キャッシュを使用します」と言う方法がないようです。

証明書には、クライアント、サーバー、CAのいくつかのタイプがあることに注意してください。これらの一部はキャッシュされます。

20
RedGrittyBrick

私の入力が何らかの形で役立つかどうかはわかりませんが、これがたった今経験したことです。カスタムドメインを持つAzureのWebサイトがあります。ドメイン名のSSLバインディングを構成する前に、クロムでhttpsを使用してアクセスしてみました。 Chromeは、サイトがセキュリティで保護されていないと完全に意味があると言っていました(ERR_CERT_COMMON_NAME_INVALID)しかし、証明書をアップロードしてAzureでSSLバインディングを構成した後も、同じエラーが発生していました。この段階では、新しいプライベートブラウザウィンドウを開くとき(または別のブラウザを使用するとき)、httpsは正常に機能していました。

しかし、私はそれを私のオープンChromeセッションで動作させることはできませんでした。SSL状態をクリアしようとしました、同じ結果。それは再起動後に機能しましたchrome完全に。

私はおそらく何かにだまされましたが、証明書がキ​​ャッシュされているように見えました...

0
Etienne