【发布时间】:2016-02-10 22:51:36
【问题描述】:
我们在 Tomcat 服务器(集群)上托管了一个 Web 应用程序,两个 Apache Web 服务器位于前面,F5 负载平衡 5 在 apache 前面。 SSL 在 F5 负载平衡器中配置。现在,每当有人使用负载均衡器的安全 URL 访问我们的应用程序时,我们的 Java Web 应用程序都不会评估 request.isSecure 是否为真。是否需要进行任何设置才能启用此功能。
在我们的 apache Web 服务器中,我们使用代理平衡器进行以下配置
ServerName ip:80
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://mycluster/
<Proxy balancer://mycluster>
BalancerMember ajp://ipapp1:8009 route=jvm1 loadfactor=1
BalancerMember ajp://ipapp2:8009 route=jvm2 loadfactor=1 status=+H
ProxySet lbmethod=byrequests
</Proxy>
我尝试通过为 8080 添加 scheme= "https", secure="true" 和 proxyPort="443" 来更改 tomcat 的 server.xml 中的连接器详细信息,但它不起作用。
我在这里错过了什么?
【问题讨论】:
-
如果您要在 BIG-IP 上终止 SSL,为什么要尝试在其后面的 Web 服务器上验证加密?您正在发送一个未加密的连接,因此它应该被验证为不安全。如果您不担心性能,请桥接 SSL 连接并使用从 BIG-IP 到 Web 服务器的服务器 SSL 配置文件重新加密以满足此要求。否则,您将需要在 BIG-IP 中编写某种 iRule,以通知 Web 服务器该连接先前已加密,并让您的应用程序验证该字符串。
-
实际上我们使用 openSAML 进行 SSO。我们收到“saml 端点 url 不匹配错误”,因为端点 url 具有 https,并且在应用程序服务器(tomcat)中,当我们尝试获取请求协议时,显然我们正在获取 http,因为 https 在负载均衡器处终止。所以试图探索关于如何让tomcat知道使用https的选项。