平衡器成员之间的SSL?

我在一台机器上运行Apache作为负载平衡器:

<VirtualHost *:443> ServerName ssl.example.com DocumentRoot /home/example/public SSLEngine on SSLCertificateFile /etc/pki/tls/certs/example.crt SSLCertificateKeyFile /etc/pki/tls/private/example.key <Proxy balancer://myappcluster> BalancerMember http://app1.example.com:12345 route=app1 BalancerMember http://app2.example.com:12345 route=app2 </Proxy> ProxyPass / balancer://myappcluster/ stickysession=_myapp_session ProxyPassReverse / balancer://myappcluster/ </VirtualHost> 

请注意,平衡器在SSL端口443下接收请求,然后在非SSL端口上与平衡器成员进行通信。 是否有可能将平衡器成员转发到SSL?

如果是这样,这是最好的/推荐的方式?

如果是这样,我必须为每个平衡器成员有另一个SSL证书吗?

SSLProxyEngine指令与此有什么关系?

是的,你在正确的轨道上。 您将需要在后端设备上设置SSL侦听器。

您将需要证书,但可能只是自签名的 – 除非您设置了SSLProxyVerify命令,Apache不关心对它们进行身份validation(当然,您可以validation它是否可以select)

是的,请设置一个SSLProxyEngine on ,并将您的ProxyPass指令更改为https和正确的新端口。

你不想这样做。 您的Apache HTTPD平衡器应该与Tomcat运行在同一个局域网中,因此不应该要求使用SSL,无论如何,Apache HTTP必须是客户端的SSL端点,也是Tomcat的可信SSL端点。 那第二部分没有意义。

您可以configurationApache HTTPD SSL,以便通过AJP传递客户端证书等,以便您的Web应用程序不能实际告诉它不是SSL,并且您可以自定义SSL的程度,直到Apache中的目录级别HTTPD使它成为处理SSLconfiguration的好地方。

我发现,如果您将SSL与非SSL Tomcat进行了平衡,那么Tomcat应用程序将其基本设置为非ssl URL,这似乎会导致混合使用SSL和非SSL内容的问题。 将SSL传递给SSL Tomcat可以正常工作。