Tomcat背后的Apache:与j_security_check一起使用SSL
我在Apache后面的Tomcat上使用SSL时遇到了一些问题。我整个上午都在使用Google来尝试找到一个好的解决方案,但目前为止还没有。Tomcat背后的Apache:与j_security_check一起使用SSL
正如我的SSL虚拟主机配置的一部分,我有
<Location /MyApp/>
ProxyPass http://localhost:8080/MyApp/
</Location>
这在大多数情况下工作正常,但j_security_check,从https://mysite.com/MyApp登录成功后,重定向到http://mysite.com/MyApp/secret.html一个HTTP页面,而不是把它当作一个的HTTPS页面https://mysite.com/MyApp/secret.html。这不仅是保密的登录,而且是正在传输的数据,所以我需要保留它的HTTPS。当我添加到应用程序的安全约束条件时
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
它重定向到https://mysite.com:8443/MyApp/secret.html。我意识到它重定向到8443,因为server.xml已将SSL配置为8443,但由于这是通过Apache代理的,所以它实际上应该是443.
我意识到我没有ProxyPassReverse,但这不是我可以添加的在Apache配置文件的一部分内
我该如何强制j_security_check重定向相对的(所以不要将https改为http)或重定向到443而不是8443?这是我应该通过Tomcat或Apache的mod_proxy强制执行吗?
干杯
聂
你真的不能指望的Tomcat做重定向到SSL您的设置。你需要编写一个过滤器来自己做重定向。
自己的设置,如果添加redirectPort这样它可能工作,
<Connector ... port="8080" redirectPort="443"/>
请取消HTTPS连接器。当你有redirectPort和HTTPS连接器时,它可能会混淆某些版本的Tomcat。听起来你不想让人们访问你的HTTPS端口。
这只适用于在同一台机器上安装了Apache和Tomcat的情况。在生产环境中,情况可能并非如此。
谢谢,我会研究过滤器:-) – niklassaers 2009-09-29 08:01:33