Поскольку Google использует HTTPS / SSL, я не могу получить к нему доступ, используя IP-адрес Google.com и передав заголовок Host. Я не понимаю, почему это не работает.
Вот что я пробовал до сих пор.
tracert google.com
Tracing route to google.com [216.58.207.238]
$ curl -H "Host: google.com" https://216.58.207.238
Получил ошибку:
curl: (51) SSL: имя субъекта сертификата '* .google .com 'не соответствует имени целевого хоста' 216.58.207.238 '
$ curl https://216.58.207.238 --resolve "google.com:443:216.58.207.238" -H "Host: google.com"
Но я получил то же сообщение об ошибке. Так действительно ли вообще невозможно открыть google.com с помощью IP-адреса?
Определенные поля в представленном сертификате должны соответствовать имени или адресу, с которым Вы соединяетесь, иначе сертификат будет объявлен "фальшивкой", и клиент должен отбросить соединение. Именно это делает Ваше завихрение.
, Если Вы соединяетесь доменным именем, то имя должно соответствовать "cname" полю в сертификате или быть перечислено в подполях "subjectAltName" DNS сертификата сервера.
, Если Вы соединяетесь путем определения необработанного IP-адреса, тот IP-адрес должен быть перечислен в подполях "subjectAltName" IP сертификата.
, Поскольку можно легко проверить, Google не указывал IP-адресов в поле SAN их сертификата, таким образом, да, они не ожидают, что кто-либо соединится с ними использующий прямой IP-адрес. Они только ожидают, что Вы будете использовать имена хостов.
можно отключить сертификат, регистрируясь в завихрении при помощи --insecure
, но Вы знаете, это представит бесполезный HTTPS.
См. также связанный вопрос на безопасность и RFC5280