Назад | Перейти на главную страницу

обойти apache SSL и вместо этого использовать tomcat

Я не хочу, чтобы мои клиенты согласовывали 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 - они будут работать как общие прокси.