5

Похоже, 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

2 ответа2

9

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 на https://mail.google.com/ . Это имеет два эффекта:

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

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

7

gmail.com использует хороший сертификат, но сервер, к которому вы подключаетесь, использует указание имени сервера для запуска виртуальных хостов на одном адресе + порт. Чтобы это работало, клиент должен сообщить серверу, какой виртуальный хост он ищет, прежде чем будет выполнено согласование SSL/TLS. Firefox и Chromium (и другие клиенты аналогичного размера) делают это автоматически.

Чтобы получить эффективный сертификат с openssl s_client , вам нужно использовать опцию -servername .

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

Результаты Google для Lynx SNI выглядят не очень хорошо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .