Проблема с настройкой сервера 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 4

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.