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

Почему я не могу перенаправить свой https: // домен на другой https: // домен на том же IP-адресе без исключения безопасности?

После некоторых поисков в Интернете я определил, что HTTP-запрос, отправленный до SSL-соединения, указывает браузеру, на каком IP-адресе зарегистрирован домен. В результате при любых принудительных перенаправлениях впоследствии будет использоваться исходный сертификат.

^ Правильно ли мое понимание выше? Может ли кто-нибудь сказать мне, где именно это происходит в HTTP-запросе?

У меня есть сервер Apache2, и я принудительно перенаправлял 301 с моего старого домена https на новый домен https. Это вызывало проблемы независимо от того, какие настройки я пробовал.

Если бы я использовал старые сертификаты для перенаправления: это привело бы к использованию старых сертификатов в новом домене.

Если бы я использовал новые сертификаты для перенаправления: это привело бы к использованию новых сертификатов в старом домене.

Оба привели к исключению безопасности SSL.

Я использую стандартные подстановочные сертификаты без функций SAN.

На данный момент мне пришлось настроить новый сервер, чтобы сделать это без получения исключения безопасности от браузера.

... Я определил, что HTTP-запрос, отправленный до SSL-соединения, указывает браузеру, на какой IP-адрес зарегистрирован домен.

Это не верно. HTTP-запрос не определяет никакой связи между URL / именем хоста и IP-адресом. Это делает DNS. Но если перенаправление выполняется на то же имя хоста, то обычно будет использоваться тот же IP-адрес. Но это может быть другой IP-адрес, если несколько IP-адресов связаны с одним и тем же именем хоста в DNS.

В результате при любых принудительных перенаправлениях впоследствии будет использоваться исходный сертификат.

Если вы перенаправляете с HTTP на HTTPS, то оригинального сертификата нет, так как у HTTP нет сертификата, только HTTPS. Если вы перенаправляете с HTTPS на хосте A на HTTPS на хосте B, то первый доступ (к хосту A) должен привести к сертификату для хоста A, а второй запрос (к хосту B) должен привести к сертификату для хоста B.

У меня есть сервер Apache2, и я принудительно перенаправлял 301 с моего старого домена https на новый домен https. Это вызывало проблемы независимо от того, какие настройки я пробовал.

В этом случае вы перенаправляете с одного имени хоста на другое имя хоста. Целевой IP-адрес может быть другим, но он также может быть одинаковым, если оба имени размещены в одной системе. Но на самом деле это не имеет значения.

Важно то, что имя хоста в URL-адресе должно соответствовать теме (-ам) сертификата. И перенаправление изменяет URL-адрес и, таким образом, может изменить имя хоста URL-адреса. Не имеет значения, задействован ли другой IP-адрес или нет: если имя хоста в URL-адресе не соответствует теме сертификата, проверка не удастся.

Таким образом, вам нужно либо:

  • Имейте сертификат, который включает оба имени хоста, то есть тот, с которого вы перенаправляете, и тот, который вы также перенаправляете. Используйте этот сертификат для обоих имен хостов.
  • Или установите разные сертификаты для каждого имени хоста и настройте его так, чтобы сертификат совпадал с именем хоста сервера. Если оба имени хоста обслуживаются на одном IP-адресе, тогда клиенты должны поддерживать SNI что есть во всех текущих браузерах, но не во всех ботах или других инструментах / библиотеках.

Перенаправление здесь не должно быть проблемой. Попробуйте отключить перенаправление и поместить статический файл в свой старый домен. У вас все еще возникают проблемы с сертификатом?

Попробуйте оба домена на SSLLabs и убедитесь, что нет серьезных проблем.

Оба домена должны иметь собственные сертификаты. В очень старых браузерах без SNI (указание имени сервера) вам понадобятся два IP-адреса для этой настройки.