Почему 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-запроса — a 301 Moved Permanentlyto https://mail.google.com/. Это имеет два эффекта:

  1. Браузер перенаправит на место назначения, сделав новый запрос, с новым туннелем (потому что другой домен) и другим сертификатом. Вот почему вы видите сертификат mail.google.com- этопослеперенаправление. Если вы посмотрите на адресную строку, то фактический сайт, на котором вы находитесь, это http://mail.google.com/, а не http://gmail.com/. Немного сложно поймать сертификат предварительного перенаправления в браузере, поэтому я использовал Fiddler2.

  2. Браузер кэширует это перенаправление и автоматически выполнит его в будущем, никогда не делая другого запроса https://gmail.com/(в этом и смысл Moved Permanently). Это не имеет особого значения для этого вопроса, но это немного усложняет обнаружение перенаправления — сначала вам нужно очистить кэши или открыть окно приватного просмотра.

Связанный контент