Переадресация с 3 доменами по EV SSL - PullRequest
0 голосов
/ 02 июня 2019

Error

The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection.

Я недавно приобрел сертификат EV SSL от Comodo, установил его на свой VPS (cPanel / WHM) и все работало отлично. Затем я обновился до http2 и теперь получаю сообщение об ошибке при переключении между каждым веб-сайтом в сертификате. 3 веб-сайта имеют один и тот же IP-адрес. Из того, что я могу сказать, это может быть проблемой. Я не хочу переиздавать SSL-сертификат для каждого домена, так как я заплатил за мульти-доменный сертификат EV. Можно ли купить 2 дополнительных IP-адреса и убедиться, что каждый домен имеет свой собственный IP-адрес? Или есть способ, которым я могу редактировать виртуальные хосты, чтобы сохранить те же настройки, что и сейчас?

Я должен отметить, что это происходит только в Safari, а не в Chrome.

Отчет SSL Labs

https://www.ssllabs.com/ssltest/analyze.html?d=www.deschutesdesigngroup.com&s=142.4.0.142&hideResults=on

Конфигурация EasyApache HTTP vhost

https://pastebin.com/dNeFRGWJ

Конфигурация EasyApache HTTPS vhost

https://pastebin.com/vgWAD5mg

1 Ответ

0 голосов
/ 03 июня 2019

HTTP / 2 включен только на двух из трех сайтов.

HTTP / 2 попытается повторно использовать соединение для нескольких доменов, если оба IP-адреса совпадают, а сертификат охватывает все необходимые домены.Это именно тот случай, и поэтому HTTP / 2 используется повторно.

Однако если вы запускаете SSLLabs на всех трех доменах, вы видите небольшое различие в протоколе, используемом для Chrome (например):

Chrome 70 / Win 10  RSA 2048 (SHA256)   TLS 1.2 > h2  
Chrome 70 / Win 10  RSA 2048 (SHA256)   TLS 1.2 > http/1.1  
Chrome 70 / Win 10  RSA 2048 (SHA256)   TLS 1.2 > h2  

И, аналогично, далее в настройке ALPN:

ALPN    Yes   h2 http/1.1
ALPN    Yes   http/1.1
ALPN    Yes   h2 http/1.1

Таким образом, сначала будет работать переход к среднему домену, так как он будет подключаться через HTTP / 1.1 и не будет повторно использовать соединение.Однако переход к среднему домену после инициирования запроса к первому или последнему домену попытается повторно использовать соединение HTTP / 2 и завершится неудачей, поскольку средний домен не поддерживает HTTP / 2.

Веб-серверы должны вернуться421 Misdirected Request код состояния для любых запросов, когда браузер пытается повторно использовать соединение, когда это не нужно, чтобы сказать: «Да, вы действительно не должны пытаться повторно использовать соединение здесь! Можете ли вы попробовать снована другом подключении, пожалуйста?То же самое происходит, если существуют разные настройки SSL / TLS (например, набор шифров, используемый для соединения, не принят в другом домене).

Chrome и Firefox правильно обрабатывают ответ 421 и прозрачно повторно отправляютзапросы через новое соединение, которое в этом случае использует HTTP / 1.1 (проверьте инструменты разработчика в браузере, и вы увидите, что это правда).Другие браузеры, в том числе Safari, используемый iOS, еще не реализовали поддержку относительно нового кода состояния 421 и поэтому не работают с ошибкой, как показано ниже:

Неверный запрос

Требуется клиентновое соединение для этого запроса, так как запрошенное имя хоста не соответствует указателю имени сервера (SNI), используемому для этого соединения.

Я предполагаю, что нет причин не включать HTTP / 2 на всехдомены а это была ошибка неправильной настройки?Если это так, включите HTTP / 2 во всех доменах, и ваша проблема должна быть решена.

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

...