我不希望我的客户端与 Apache Web 服务器协商 SSL 连接,而是希望它们与其背后的 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 web 服务器正在与 tomcat 协商。(我看到的是 apache web 服务器自签名证书)
答案1
我认为您无法在 tomcat 前面使用 apache 做您想做的事情。如果您希望 tomcat 处理 SSL 协商,为什么不直接使用 iptables 将 443 上的流量重定向到其端口 (8443)?您可以使用以下规则来做到这一点(将 eth0 替换为您的以太网接口):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
如果您想要/需要保留 apache,我认为您需要在 apache 中协商 ssl。或者,如果您想要在 tomcat 应用程序前面添加某些东西,您可以使用 haproxy 或 nginx - 它们将作为通用代理工作。