Возникла проблема с нашей настройкой Apache-2.2 и обратного прокси-сервера, на который проксируется другое устройство.
поток: Apache A -> proxy.abc.net -> Apache B
Ошибка, которую мы получаем на Apache B:
Имя хоста proxy.abc.net, предоставленное через SNI, и имя хоста backend.abc.net, предоставленное через HTTP, отличаются
Текущая конфигурация
<VirtualHost frontend.abc.com:80>
ServerName frontend.abc.com
SSLEngine on
SSLOptions +StrictRequire
SSLProtocol -all +TLSv1
SSLHonorCipherOrder On
SSLCipherSuite RC4-SHA:HIGH:!ADH:!MD5
SSLCertificateFile conf/certs/cert.cer
SSLProxyCACertificateFile certs/proxy.cer
SSLCertificateKeyFile conf/certs/cert.pem
SSLCertificateChainFile conf/certs/chain.cer
DocumentRoot /foo/bar
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost off
ProxyErrorOverride On
SetEnv proxy-sendchunked 1
ProxyRemote "*" https://proxy.abc.net:8080
ProxyPass /foo https://backend.abc.net:8888/foo disablereuse=on
</Virtual Host>
Добавление
SSLProxyProtocol SSLv3
работает, поскольку не выполняет проверку SNI, но SSLv3 не является вариантом, который мы обязаны использовать TLSv1 или выше.
В Apache 2.2 эта проверка жестко запрограммирована (сравнивает имя хоста SNI и имя хоста).
Apache 2.4 смягчает это условие и дает сбой, только если:
* The request does not select the virtual host that was
* selected by the SNI and its SSL parameters are different
так что ответ - перейти на 2.4.