Назад | Перейти на главную страницу

Как открыть google.com с помощью curl с заголовком Host (сертификат не соответствует)

Поскольку Google использует HTTPS / SSL, я не могу получить к нему доступ, используя IP-адрес Google.com и передавая заголовок Host. Я не понимаю, почему это не работает.

Вот что я пробовал до сих пор.

  1. Я получил IP-адрес Google.com
tracert google.com
Tracing route to google.com [216.58.207.238]
  1. Затем я попытался подключиться, используя IP-адрес с заголовком Host
$ curl -H "Host: google.com" https://216.58.207.238

У меня ошибка:

curl: (51) SSL: имя субъекта сертификата '* .google.com' не соответствует имени целевого хоста '216.58.207.238'

  1. Затем я попробовал это
$ curl https://216.58.207.238 --resolve "google.com:443:216.58.207.238" -H "Host: google.com"

Но у меня такое же сообщение об ошибке. Так действительно ли вообще невозможно открыть google.com с помощью IP-адреса?

Некоторые поля в представленном сертификате должны соответствовать имени или адресу, к которому вы подключаетесь, в противном случае сертификат будет объявлен «фальшивым», и клиент должен разорвать соединение. Вот что делает ваш локон.

Если вы подключаетесь по имени домена, это имя должно совпадать с полем «cname» в сертификате или быть перечислено в подполе DNS «subjectAltName» сертификата сервера.

Если вы подключаетесь, указав необработанный IP-адрес, этот IP-адрес должен быть указан в подполе IP «subjectAltName» сертификата.

Как вы можете легко проверить, Google не указывал никаких IP-адресов в поле SAN своего сертификата, поэтому да, они не ожидают, что кто-то подключится к ним с использованием прямого IP-адреса. Они ожидают, что вы будете использовать только имена хостов.

Вы можете отключить проверку сертификата в curl, используя --insecure, но вы знаете, что это сделает HTTPS бесполезным.

См. Также связанный вопрос о Безопасность и RFC5280