Инициализация соединения HTTPS/TLS

Я играл с Wireshark и заметил, что некоторые веб-сайты ведут себя по-разному при инициализации соединения https. Первым веб-сайтом, с которым я тестировал, был Bank of America, и он вел себя именно так, как я и ожидал, когда вошел в свой адресную строку "bankofamerica.com".

Поток управления был следующим:

  1. Отправить запрос DNS
  2. Установите TCP-соединение через порт 80 (TCP Handshake)
  3. Отправить GET / HTTP/1.1
  4. Получите 301 постоянно перемещен на https://www.bankofamerica.com/
  5. Установите TCP-соединение через 443
  6. Настройте TLS и отправьте данные

Это именно то, что я ожидал бы случиться. Однако, когда я ввел "facebook.com" в адресную строку, произошло следующее:

  1. Отправить запрос DNS
  2. Установите TCP-соединение через порт 443
  3. Настройте TLS и отправьте данные

Как это возможно, что соединение смогло пропустить HTTP-запрос, хотя я не указал HTTPS в своей адресной строке? Я попытался очистить кеш браузера, сбросить настройки маршрутизатора и даже заглянуть в DNS RFC, чтобы увидеть, был ли какой-то флаг "только https" (как я и ожидал, его не было).

Я смог сгенерировать 301 Moved Permanently (однако это было на http://www/. NOT https://www/.), Когда я использовал netcat:

nc facebook.com 80\n
GET / HTTP/1.0\n\n

Но я понятия не имею, как (даже после удаления моего кэша) он пропускает часть http в подключении к браузеру. Я беспокоюсь, что не понимаю фундаментальную часть работы http/https. Любая помощь будет оценена.

Спасибо

1 ответ

Решение

Наиболее вероятная причина в том, что вы уже посещали Facebook раньше, когда использовали этот браузер, а сервер Facebook возвращал заголовок HTTP Strict Transport Security ( HSTS).

Как только сайт вернул ответ с Strict-Transport-Security установить, тогда браузер всегда будет идти прямо к HTTPS, даже если вы используете http:// префикс в браузере. Я узнал об этом во время экспериментов с HSTS на своем частном веб-сайте и обнаружил, что некоторым браузерам (Firefox я смотрю на вас) было очень трудно удалить настройку HSTS после ее установки.

Другие вопросы по тегам