Как работает редирект на сайте yandex.ua?

Я решил проверить содержимое <b>yandex.ua</b>, но столкнулся с тем, что сайт сразу перенаправляет меня на <b>ya.ru</b>. Вопрос возник, так как, изучив сертификат ya.ru, я заметил, что в нем нет доменов в зоне <b>UA</b>. Логично, учитывая, что компания из России может не хотеть иметь связи с Украиной. <br/> Интересно, как обстоят дела с HTTPS. Я открыл <i>DevTools</i>, активировал галочку <i>Preserve Logs</i>, и, указав <i><a href="https://yandex.ua/" rel="nofollow">https://yandex.ua/</a></i>, снова столкнулся с <b>редиректом 307</b> на <i><a href="https://ya.ru/" rel="nofollow">https://ya.ru/</a></i>. <br/> Соответственно, я не смог получить информацию о сертификате для yandex.ua. Есть возможность установить расширение для блокировки редиректов и попробовать изучить сертификат с помощью браузера, но я предпочел более сложный вариант: <br/> <pre><code class="powershell">openssl.exe s_client -connect 5.255.255.77:443 -showcerts -servername yandex.ua</code></pre> <br/> Я скопировал содержимое сертификатов в файл и обнаружил, что оно совпадает с тем, что доступно на сайте <a href="https://ya.ru/" rel="nofollow">https://ya.ru/</a> — в сертификате не содержится домена в зоне UA. Похоже, сервер использует одно и то же сертификатное оформление для всех доменов. <br/> <br/> Поэтому у меня вопрос: как работает редирект с домена yandex.ua при подключении по протоколу HTTPS, если исходный домен отсутствует в сертификате? Почему браузер не выдает предупреждение о несоответствии сертификата?
  • 10 апреля 2025 г. 21:15
Ответы на вопрос 1
Редирект с домена yandex.ua на ya.ru работает через механизм, называемый HTTP-редиректом, который может быть реализован в ответах сервера.

Когда вы пытаетесь получить доступ к yandex.ua через HTTPS, ваш браузер устанавливает защищенное соединение с сервером. При этом сервер отвечает с редиректом (в вашем случае, редирект с кодом 307), что означает, что браузер должен выполнить запрос на новый URL, который в этом случае – ya.ru.

Теперь давайте разберем, почему браузер не выдает предупреждение о несоответствии сертификата:

1. **Сертификаты и имя сервера**: Когда вы устанавливаете соединение с сервером (в вашем случае с IP-адресом `5.255.255.77` и имя сервера `yandex.ua`), браузер проверяет сертификат, который сервер предоставляет. Если в сертификате не указано имя хоста, к которому происходит подключение, это может вызвать предупреждение о несоответствии. Однако, если сервер настроен на обработку всех запросов, поступающих на этот IP-адрес, с помощью одного и того же сертификата (что часто делается с помощью wildcard-сертификатов или SAN-сертификатов), предупреждений может не возникнуть.

2. **Сертификаты с расширениями**: Сертификаты могут включать в себя расширения `Subject Alternative Name (SAN)`, позволяющие указать несколько доменных имен. Если сертификат яндекса включает в себя в расширении `SAN` какие-то обобщенные или wildcard-домены, которые могут покрывать разные поддомены, то ваш браузер примет его.

3. **HTTP Strict Transport Security (HSTS)**: Если yandex.ua имеет включенный HSTS, это может повлиять на поведение браузера, сохраняя информацию о том, что сайт требует HTTPS для всех последующих соединений. Поэтому браузер будет всегда пытаться установить соединение через HTTPS, что тоже может влиять на то, как редирект обрабатывается.

Суть в том, что если сервер настроен должным образом, он может обрабатывать запросы как к yandex.ua, так и к ya.ru, используя общие сертификаты и без выдачи предупреждений о несоответствии. Направление пользователей с одного сайта на другой — это обычная практика, когда компании хотят отделить свои доменные имена или создать различные направления для разных регионов.
Похожие вопросы