我在配置 JBoss 的安全环境时遇到了麻烦。
这是我们的环境:
我们有一个 F5 负载均衡器,它具有我们域的通配符证书。
我在一个名为peanut的服务器上的JBoss上运行了几个应用程序。
在防火墙内,我可以运行该应用程序http://peanut.mydomain.com:8080
从防火墙的另一端,只能通过子域下的 HTTPS 访问服务器https://pule.mydomain.com:8080
负载均衡器有证书。因此任何请求https://pule.mydomain.com安全地到达负载均衡器。在负载均衡器和peanut之间,请求是http。
现在,此应用使用 AJAX 调用和 Web 服务。从 Loadbalancer 外部,我调用https://pule.mydomain.com:8080-但是由于Loadbalancer和peanut之间的通信是http,网页返回的引用http://pule.mydomain.com:8080。
http://pule.mydomain.com无法在任何地方访问,并且 AJAX 调用失败。
我的问题是,如何配置 JBoss 以始终使用 https,但不需要它自己的证书?
这是我所拥有的,但它不起作用。我认为我不需要重定向到端口 8443,因为防火墙和 jboss 服务器之间没有安全连接。
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" scheme="https" />
答案1
尝试添加secure=true
到您的连接器。假设您的应用程序依赖于“request.isSecure()”的结果来确定在构建这些引用时是否使用 https,这将解决问题。
答案2
您需要配置 F5 设备来执行URL 重写,可能还需要补充ProxyPass iRule(需要注册)在该文章底部提到。