Java httpd和tomcat之间的通信安全吗?

Java httpd和tomcat之间的通信安全吗?,java,apache,tomcat,ssl,encryption,Java,Apache,Tomcat,Ssl,Encryption,我们在tomcat端口8080上运行了一个应用程序,我们正在使用Apache httpd,安装并实现了SSL,所有请求都被重定向到端口443,并通过mod_proxy_httpd代理到tomcat 8080: ProxyPass / http://localhost:8080/ retry=0 timeout=5 ProxyPassReverse / http://localhost:8080/ 一切正常,从客户端到httpd的请求是安全的,但显然httpd和tomcat之间的通信并没有加密

我们在tomcat端口8080上运行了一个应用程序,我们正在使用Apache httpd,安装并实现了SSL,所有请求都被重定向到端口443,并通过mod_proxy_httpd代理到tomcat 8080:

ProxyPass / http://localhost:8080/ retry=0 timeout=5
ProxyPassReverse / http://localhost:8080/
一切正常,从客户端到httpd的请求是安全的,但显然httpd和tomcat之间的通信并没有加密

我的问题是: 1.如果httpd和tomcat之间的通信未加密,是否会出现问题?如果httpd和tomcat处于同一服务器下

2.我们正在传输敏感数据,例如支付处理期间的客户信用卡信息,我们是否也需要在tomcat上实现SSL(例如端口8443),并将请求从443代理到安全的tomcat端口8443?所以从客户端到httpd再到tomcat都是安全的,但是这可能会影响性能,因为需要双向加密/解密

我们一直在研究这个问题,但没有找到明确的答案。非常感谢您提供的任何帮助。

如果您坚持使用本地主机(例如,将Apache httpd与tomcat放在同一台服务器上),这很可能是安全的:如果您不信任“本地主机”网络的实现,那么您也不能信任同一台服务器上的TLS实现

您可以通过在不同于tomcat的服务器上使用Apache来获得性能。在这种情况下,您显然依赖于两者之间的网络:路由器、布线等。如果您不信任您的网络,这可能是您可以解决的问题。但是,请注意,tomcat和文件系统(临时文件)、数据库等之间可能也有一些连接。如果不信任数据中心/网络安全,那么在固定传输加密的情况下,数据仍可能从该应用程序中泄漏

我们无法判断您对网络的信任程度,您必须自己完成这项工作

请注意,在您在问题中提到的情况下,当您仅在http上转发时,tomcat将不知道已使用https建立了连接(例如:浏览器->Apache是https,Apache->tomcat是http)


您可以将tomcat的连接器配置为假定连接是安全的(在上查找
secure
属性),但这也意味着您绝对需要确保绝不允许将http连接转发到该连接器。检查AJP(一种不同的协议)是否适合您——它会将所有HTTP(S)连接的属性正确地转发给tomcat。有些人喜欢它(我就是其中之一),有些人不喜欢。

谢谢你的回答@olaf kock,我不熟悉AJP,但当你说通过AJP将所有HTTP(S)连接的属性正确转发给tomcat时,是否与下面一样?或者AJP有更简单的设置?有什么区别?在SSL.conf:ProxyPass/retry=0 timeout=5 ProxyPassReverse/Server.xml中,为SSL配置端口8443:可以对http端口进行安全配置,例如,即使tomat没有收到加密连接,它可以假设加密在相关连接上处于活动状态-这是在另一台服务器(如Apache httpd)上终止https的用例。因此,可以在您的http端口8080或另一个端口上激活它,前提是您从未使用它来代理到它的未加密连接。否则它们会被错误地标记为“安全”