不正な証明書を使用しているのに、https://gmail.com/ で SSL エラーが発生しないのはなぜですか?

不正な証明書を使用しているのに、https://gmail.com/ で SSL エラーが発生しないのはなぜですか?

それは次のようになりますhttps://gmail.comホスト名の SSL 証明書を使用しますmail.google.com。SSL 証明書のホスト名がブラウザの URL と一致しないのに、なぜこれが機能するのでしょうか? 代わりに警告が表示されるはずです。

FirefoxとChromiumでテストしました(以前は機能しなかった)。

echo | openssl s_client -connect gmail.com:443次のコマンドで証明書を確認しました:

Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mail.google.com

答え1

gmail.comは適切な証明書を使用していますが、接続先のサーバーはサーバー名の表示単一のアドレスとポートで仮想ホストを実行します。これが機能するには、SSL/TLS ネゴシエーションが完了する前に、クライアントが探している仮想ホストをサーバーに伝える必要があります。Firefox と Chromium (および同様のサイズの他のクライアント) はこれを自動的に行います。

で有効な証明書を取得するにはopenssl s_client、 オプションを使用する必要があります-servername

openssl s_client -servername gmail.com -connect gmail.com:443

Googleの検索結果リンクスSNI見た目が良くない。

答え2

https://gmail.com/不正な証明書は使用されていません。以下は Fiddler2 によって傍受された現在の証明書です。

== Server Certificate ==========
[Subject]
  CN=gmail.com, O=Google Inc, L=Mountain View, S=California, C=US

[Issuer]
  CN=Google Internet Authority G2, O=Google Inc, C=US

[Serial Number]
  4F4A246099981C2C

[Not Before]
  16/07/2014 10:04:37 PM

[Not After]
  14/10/2014 11:00:00 AM

[Thumbprint]
  8F1065D237732F71CAD350A3FD0089AEEAAB675E

に注意してくださいCN=gmail.com

HTTP リクエストからの実際の応答タイプは301 Moved Permanentlytoですhttps://mail.google.com/。これには 2 つの効果があります。

  1. ブラウザは宛先にリダイレクトし、新しいトンネル(ドメインが異なるため)と異なる証明書を使用して新しいリクエストを作成します。これが証明mail.google.com書が表示される理由です。リダイレクト。アドレスバーを見ると、実際にアクセスしているサイトは ではhttp://mail.google.com/なく ですhttp://gmail.com/。ブラウザでリダイレクト前の証明書をキャッチするのは少し難しいため、Fiddler2 を使用しました。

  2. ブラウザはこのリダイレクトをキャッシュし、今後は に別のリクエストを送信せずに自動的に実行しますhttps://gmail.com/(これが のポイントですMoved Permanently)。これはこの質問にとってそれほど重要ではありませんが、リダイレクトを発見するのが少し難しくなります。まずキャッシュをクリアするか、プライベート ブラウジング ウィンドウを開く必要があります。

関連情報