gpt4 book ai didi

Apache : Using SSL with j_security_check 背后的 Tomcat

转载 作者:行者123 更新时间:2023-11-28 22:23:43 26 4
gpt4 key购买 nike

我在 Apache 后面的 Tomcat 上使用 SSL 时遇到了一点问题。我整个上午都在使用 Google 试图找到一个好的解决方案,但到目前为止一无所获。

作为我的 SSL VirtualHost 配置的一部分,我有

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

这在大多数情况下工作正常,但 j_security_check,在从 https://mysite.com/MyApp 成功登录后, 重定向到 HTTP 页面 http://mysite.com/MyApp/secret.html而不是将其保留为 HTTPS 页面 https://mysite.com/MyApp/secret.html .不仅登录信息是 secret 的,而且传输的数据也是 secret 的,因此我需要将其保存为 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 时有效。在生产环境中,情况可能并非如此。

关于Apache : Using SSL with j_security_check 背后的 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com