我有使用上一个Tomcat即后面的Apache SSL一个小问题。我用谷歌整个上午都试图找到一个很好的解决方案,但没有那么远。

正如我的SSL虚拟主机配置的一部分我

<Location /MyApp/>
  ProxyPass http://localhost:8080/MyApp/
</Location>

这工作正常,在大多数情况下,但j_security_check,从 https://mysite.com/MyApp <登录成功后, / A>,重定向到HTTP页 http://mysite.com/MyApp/secret.html而不是把它当作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的执行?

干杯

的Nik

有帮助吗?

解决方案

您真的不能指望在Tomcat上做重定向到SSL您的设置。你需要写一个过滤器,做重定向自己。

有关特定的设置,它可能如果添加redirectPort喜欢这个工作,

<Connector ... port="8080" redirectPort="443"/>

请取出HTTPS连接器。当你有两个redirectPort和HTTPS连接器这可能会混淆的Tomcat的一些版本。听起来像是你不希望人们无论如何访问HTTPS端口。

当你有Apache和Tomcat在同一台机器上这种方法只适用。在生产环境中,这可能并非如此。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top