【问题标题】:Tomcat behind Apache and SSLApache 和 SSL 背后的 Tomcat
【发布时间】:2012-04-19 23:22:21
【问题描述】:

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

我们有一个 web 应用程序(Grails + Spring Security)在 apache 后面的 tomcat 中运行。 部分应用程序需要在 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

谢谢

【问题讨论】:

    标签: apache tomcat grails ssl spring-security


    【解决方案1】:

    从您的帖子中,我无法判断您是否在让 ssl 在 Apache 上工作时遇到了问题,或者由于您的应用程序的某些部分是通过 http 进行的,因此 Apache 永远不会通过 ssl 重定向。请注意,在 ssl 上拥有多个“段”是完全可以的(意味着用户 -> Apache over ssl 和 Apache -> tomcat over ssl)。
    1. 如果问题是让 ssl 在 Apache 上运行 - 您需要确保在 Apache 端正确设置了 ssl。
    2. 如果问题是“重定向”,请尝试为 http 和 https 保留单独的 url。像 /something.mysite.com/non_ssl/ 和 /something.mysite.com/ssl/。这将使在 Apache 中编写规则变得更加容易。

    【讨论】:

      【解决方案2】:

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

      我不确定您在哪里读到mod_jk 可以将 SSL 连接本身传递给 Tomcat。它需要直接中继套接字,因此绕过mod_jk 使用的AJP 协议(​​顺便说一下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

      【讨论】:

      • 我同意。特别是关于 mod_proxy_* 点。我们使用 Apache 来处理我们的 SSL,然后使用 mod_proxy_http 将请求转发到 Tomcat。效果很好。而且配置超级简单。
      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2013-06-20
      • 2012-12-23
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多