一尘不染

Tomcat支持Apache和SSL

tomcat

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

我们有一个Web应用程序(Grails + Spring Security),该应用程序在Tomcat中的apache中运行。 部分
的应用需求对HTTPS运行,因此使用Spring的安全通道安全,当您导航到是安全的应用程序的一部分,Spring将您重定向到https以302个状态码。

现在,tomcat已设置为了解https和证书,因此它知道如何处理ssl。实际上,当直接通过url和port来直接访问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,并且只希望将其典当给tomcat。

这有可能吗,还是我错过了什么?有人对如何设置有明确的指示吗?任何帮助将不胜感激。

我们正在使用Apache 2.2和tomat 7.0.27

谢谢


阅读 236

收藏
2020-06-16

共1个答案

一尘不染

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

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

我不确定为什么要让Tomcat处理SSL请求,为什么要让Apache在Tomcat之前。如果这与端口号或其他有关,请使用防火墙规则将端口443转发到Tomcat端口。

2020-06-16