Я не хочу, чтобы мои клиенты согласовывали SSL-соединение с веб-сервером Apache, я хочу, чтобы они делали это вместо этого с сервером tomcat за ним. Как я могу это сделать?
Мой нынешний httpd.conf
конфигурация:
Listen 443 https
SSLProxyEngine On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
<VirtualHost _default_:443>
SSLProxyEngine On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
SSLEngine On
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
</VirtualHost>
Работает, но не так, как я хочу. Кажется, что клиент ведет переговоры с apache, а веб-сервер apache - с tomcat. (Я вижу самоподписанный сертификат веб-сервера apache)
Я не думаю, что вы можете делать то, что хотите, с apache перед tomcat. Если вы хотите, чтобы tomcat обрабатывал согласование ssl, почему бы просто не использовать iptables для перенаправления трафика с 443 на его порт (8443)? Вы можете сделать это с помощью такого правила (замените eth0 на свой интерфейс Ethernet):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
Если вы хотите / хотите сохранить apache на месте, я думаю, вам нужно будет согласовать ssl в apache. В качестве альтернативы, если вам нужно что-то перед вашим приложением tomcat, вы можете использовать haproxy или nginx - они будут работать как общие прокси.