Проблема с настройкой сервера apache для прокси-соединения SSL
Я запускаю приложение на Tomcat7 с Apache Portable Runtime, я купил SSL-сертификат и настроил его правильно - когда я пытаюсь подключиться через комбинацию ip:port, он подключается нормально, но предупреждает меня, что сертификат выдается на доменное имя, а не на IP.
VPS, на котором я нахожусь, не имеет SELinux (и есть проблема с установкой), которая требуется AFAIK для настройки SSL в apache, поэтому я хочу просто перенаправлять запросы в Tomcat, который делает это на своем компьютере. конец.
Я настроил apache для прокси-соединения, сначала с портом 80, который отлично работает:
NameVirtualHost www.mysite.com:80
<VirtualHost www.mysite.com:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName http://www.mysite.com
ServerAlias http://www.mysite.com
ProxyPass / http://localhost:8180/MYSITE/
ProxyPassReverse / http://localhost:8180/MYSITE/
ProxyPassReverseCookiePath /MYSITE/ /
</VirtualHost>
И затем с портом SSL, который по какой-то причине не хочет работать:
NameVirtualHost www.mysite.com:443
<VirtualHost www.mysite.com:443>
SSLProxyEngine On
ProxyPreserveHost On
ProxyRequests Off
ServerName https://www.mysite.com
ServerAlias https://www.mysite.com
ProxyPass / https://localhost:8443/MYSITE/
ProxyPassReverse / https://localhost:8443/MYSITE/
ProxyPassReverseCookiePath /MYSITE/ /
CacheDisable *
</VirtualHost>
EDIT : Я добавил
RequestHeader set Front-End-Https "On"
Директива виртуальному хосту www.mysite.com:443, согласно: http://www.gossamer-threads.com/lists/apache/users/396577
Здесь находится соединитель Tomcat APR, настроенный на сервере Tomcat.xml -
<Connector port="8443" maxHttpHeaderSize="16500"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLCertificateFile="x509-cert-path"
SSLCertificateKeyFile="key-file-path"
/>
Их не было. ошибки / предупреждения включение виртуальных хостов и перезапуск apache. Когда я пытаюсь https, это то, что я вижу в FFox:
SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)
И в Хроме:
Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
Ошибка Apache.журнал показывает это предупреждающее сообщение:
[warn] [client 216.58.38.90] proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be www.mysite.com for uri /
Я потратил несколько дней, пытаясь настроить его, и был бы очень благодарен, если бы кто-нибудь объяснил, что происходит и как это исправить.
Большое спасибо. Виктор.
1 ответ:
Вам не нужен соединитель 8443 HTTPS в Tomcat. Apache HTTPD должен прервать SSL-соединение и говорить открытым текстом с Tomcat, через
ProxyPass / http://localhost:8080/MYSITE/.
вам просто нужен открытый http-соединитель сport=8080
иaddress=127.0.0.1
, чтобы никто посторонний не мог добраться до него.Еще лучше, не иметь никаких HTTP-коннекторов в Tomcat, только AJP-коннектор,
address=127.0.0.1
по-прежнему, и использовать mod_proxy_ajp в Apache.