gpt4 book ai didi

apache - Apache 和 SSL 背后的 Tomcat

转载 作者:行者123 更新时间:2023-11-28 21:45:50 25 4
gpt4 key购买 nike

我到处寻找,但找不到针对以下情况的明确解决方案:

我们有一个在 tomcat 中运行的 Web 应用程序(Grails + Spring Security),在 apache 后面。 部分 应用程序需要在 https 上运行,因此使用 Spring Security Channel Security,每当您导航到安全的应用程序部分时,Spring 都会使用 302 状态代码将您重定向到 https。

现在,tomcat 设置为了解 https 和证书,因此它知道如何处理 ssl。事实上,当通过直接转到 url 和端口直接访问 tomcat 来绕过 apache 时,一切正常 100%。

当把 apache 放在 tomcat 前面时,问题就来了。我们目前拥有的 apache 配置适用于应用程序的非安全部分。我们正在使用 mod_jk 来代理 apache 和 tomcat。

但是,一旦您尝试转到应用程序的安全部分,Spring 就会重定向您,它会命中

<VirtualHost _default_:443> ... </VirtualHost>

apache 配置的一部分...这就是问题开始的地方。

据我所知,apache 可以通过 mod_jk 将 ssl 处理传递给 tomcat。但是我们似乎无法获得正确的配置。由于 tomcat 已经为 ssl 设置,它知道证书在哪里,并且设置了 Spring Security,我们希望 tomcat 处理所有 ssl,而 apache 只是将其典当给 tomcat。

这完全有可能吗,还是我遗漏了什么?有没有人对如何设置有明确的说明?任何帮助将不胜感激。

我们正在使用 Apache 2.2 和 tomat 7.0.27

谢谢

最佳答案

您不能只是将 SSL/TLS 流量从 Apache 中继到 Tomcat。您的 SSL 连接在 Apache 结束,然后您应该将流量反向代理到 Tomcat(SSL 在这种情况下很少有用),或者让客户端直接连接到 Tomcat 并让它处理 SSL 连接。

我不确定您在哪里读到 mod_jk 可以将 SSL 连接本身传递给 Tomcat。它需要直接中继套接字,因此绕过 mod_jk 使用的 AJP 协议(protocol)(​​顺便说一下 mod_proxy_ajp 是新方法,甚至 mod_proxy_http).

如果您希望 Tomcat 无论如何都处理 SSL 请求,我不确定您为什么希望 Apache 位于 Tomcat 之前。如果这与端口号或其他内容有关,请使用防火墙规则将端口 443 转发到 Tomcat 端口。

此外,请注意这些从 HTTP 到 HTTPS 的自动重定向的完成方式:they only happen after the initial HTTP request has been made .

关于apache - Apache 和 SSL 背后的 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10041830/

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