それは次のようになります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 Permanently
toですhttps://mail.google.com/
。これには 2 つの効果があります。
ブラウザは宛先にリダイレクトし、新しいトンネル(ドメインが異なるため)と異なる証明書を使用して新しいリクエストを作成します。これが証明
mail.google.com
書が表示される理由です。後リダイレクト。アドレスバーを見ると、実際にアクセスしているサイトは ではhttp://mail.google.com/
なく ですhttp://gmail.com/
。ブラウザでリダイレクト前の証明書をキャッチするのは少し難しいため、Fiddler2 を使用しました。ブラウザはこのリダイレクトをキャッシュし、今後は に別のリクエストを送信せずに自動的に実行します
https://gmail.com/
(これが のポイントですMoved Permanently
)。これはこの質問にとってそれほど重要ではありませんが、リダイレクトを発見するのが少し難しくなります。まずキャッシュをクリアするか、プライベート ブラウジング ウィンドウを開く必要があります。