Вопрос: Перенаправить https в другой https


Я был в Google для этого вопроса, и иронически досадно, я не могу найти конкретного ответа. Я сам ответил на этот вопрос в прошлом, и теперь я не могу вспомнить свое собственное объяснение.

Несколько раз в год кто-то попросит меня сделать это. Я хотел бы указать им на какую-то респектабельную статью, которая объясняет это.

Я хочу использовать URL в https://www.example.com/ и перенаправить трафик на https://www.example2.com/ ,

Я считаю, что это должно быть технически возможно, но нежелательно. Что не так с этим методом? Будут ли браузеры получать всплывающее окно безопасности, поскольку я перенаправляю их на другой сайт? Может ли кто-нибудь предоставить ссылку на некоторые респектабельные документы, которые объясняют это?


23
2017-08-05 14:15


Источник


Ваша ситуация может быть раздражающей, но это не иронично;) - Gareth
@Gareth, Это определение Аланиса Мориссетэна иронично (он раздражает, как ты сказал). - ManiacZX
@ManiacZX Я всегда думал, что ирония в песне Аланис Мориссетт была на самом деле песней. Ирония в том, что у песни нет настоящей иронии. - Joshua


Ответы:


Вы можете это сделать, на обоих сайтах должен быть действительный сертификат SSL. Таким образом, браузеры не будут вызывать всплывающее окно безопасности. Однако, если оба сайта существуют на одном сервере, оба домена должны размещаться на разных IP-адресах.

Веб-сервер просматривает заголовок «Хост» в HTTP-запросе, чтобы узнать, какой сайт ему нужно обслуживать. Согласование SSL происходит до отправки HTTP-запроса, поэтому в этот момент веб-сервер не может определить, на каком веб-сайте он будет отображаться. Он всегда будет отправлять тот же сертификат в браузер.

Существует два способа обойти это:

  • Имейте подстановочный знак для * .example.com, поэтому все поддомены могут использовать один и тот же сертификат.
  • Запускайте каждый сайт SSL на другом IP-адресе. Таким образом, веб-сервер знает, какой сертификат SSL он может отправить в браузер, путем проверки IP-адреса, который получил входящее соединение.

Обратите внимание, что вполне возможно подключить несколько IP-адресов к одному и тому же сетевому адаптеру, просто вам нужен второй IP-адрес, доступный в вашем IP-пространстве.

Обновить: В настоящее время вы можете запускать несколько сайтов SSL на одном IP-адресе. Чтобы включить это, настройте поддержку SNI на своем веб-сервере. Это поддерживает большинство современных браузеров (кроме Windows XP и Android 2).


14
2017-08-05 16:09



Вы также можете размещать несколько сайтов SSL на одном и том же IP-адресе в соответствии с сертификатом унифицированной связи (UCC), см. help.godaddy.com/article/3908 - ManiacZX
Еще одним обходным решением для проблемы с несколькими хостами / одним IP-сертификатом является использование альтернативных номеров портов. Это не идеально, поскольку некоторые брандмауэры / общедоступные точки доступа блокируют трафик не 80/443. - Bryan Agee


Я никогда не пробовал этого, поэтому я не говорю из конкретного опыта, но он должен работать. Вам необходимо будет иметь действительный сертификат SSL для https://www.example.com поскольку имя хоста зашифровано внутри HTTP-заголовка, поэтому ваш сервер не будет знать, чтобы перенаправить, пока он не будет дешифрован. После этого он должен перенаправить, так как это будет обычный HTTP-запрос.


5
2017-08-05 14:19





Почему это было бы нежелательно?

Например, Big Bank и Little Bank запускают сайты на https, чтобы дать клиентам счастливое безопасное чувство. Большой Банк покупает Маленький Банк. В какой-то момент ИТ-специалисты настроят перенаправление для https://www.littlebank.com в https://www.bigbank.com, Это законная причина перенаправления с https на https.

Это должно работать нормально.


1
2017-08-05 16:03



Этот сценарий, который вы описали, будет в порядке, однако, если вы перешли на сайт www.littlebank.com и были перенаправлены на сайт www.bigbank.com, тогда как фактический адрес замаскирован таким образом, чтобы браузер все еще показывал www.littlebank.com, это нехорошо вещь. Это довольно часто встречается с небезопасными сайтами, где это не имеет значения, но, конечно же, вы можете видеть опасности, присущие отображению себя как безопасного веб-сайта, которого вы на самом деле не являетесь. - Charles


Отключение, которое, как мне кажется, присутствует в текущих ответах, которые могут возникнуть из-за вас, заключается в том, что в любом из этих обстоятельств истинная переадресация (то есть: браузер будет перенаправлена ​​на www.example2.com) будет прекрасной, но если вы замаскируете это так что браузер все еще понимает, что он указан на www.example.com, когда на самом деле вы отправили его на www.example2.com, это где вы увидите предупреждения о безопасности точно, потому что вы можете пытаться обмануть пользователя.

Короткий вариант - это нормальное перенаправление, должно быть хорошо, маскирование адресов, вероятно, оставит вас с большим количеством объяснений.


1
2017-08-05 20:37



Спасибо, Чарльз. Я думаю, это должна быть «нежелательная» ситуация. - Stefan Lasiewski


Как видим, эта проблема может быть решена на транспортном уровне. Предположим, у вас есть запись DNS A для example.com, указывающая на 192.168.0.1. Когда вы вводите https://example.com в браузере ваш компьютер установил TCP-соединение с сервером с IP 192.168.0.1, где какой-то процесс прослушивает порт 443. Что делать, если в то же время сервер (который не пытается вдаваться в подробности данных, переданных по этому TCP-протоколу сеанс как начало согласования SSL) устанавливает TCP-соединение с 192.168.0.2 (другой сервер с DNS A example2.com, указывающий на него. HA proxy linux utulity, установленный на первом сервере, может решить эту проблему с помощью такой конфигурации:

defaults
        log    global
        mode    tcp
        retries 2
        option redispatch
        option tcplog
        option tcpka
        option clitcpka
        option srvtcpka
        timeout connect 5s      
        timeout client  24h     #timeout client->haproxy(frontend)
        timeout server  60m

listen front443 192.168.0.1:443
    server back443 192.168.0.2:443

Но это приведет к ошибке сертификата SSL, если ваш веб-сервер example2.com не покажет сертификат SSL с CN = example2.com и SAN = example.com.

Или вы можете настроить горизонт slpit DNS, когда от пользователей perstective example.com и example2.com разрешено 192.168.0.1.


0
2018-03-13 16:03