我们在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都是安全的,但这可能会影响性能,因为需要双向加密/解密。
我们一直在搜索这个问题,但没有找到明确的答案。非常感谢任何帮助。
答案 0 :(得分:1)
如果你坚持使用localhost(例如在与tomcat相同的服务器上安装Apache httpd),这很可能是安全的:如果你不相信" localhost"网络,你也不能在同一台服务器上信任TLS实现。
您可以通过将Apache放在与tomcat不同的服务器上来获得性能。在这种情况下,您显然依赖于两者之间的网络:路由器,布线等。如果您不信任您的网络,这可能是您可以处理的事情。但是,请注意,您可能还在tomcat和文件系统(临时文件),数据库等之间建立了一些连接 - 如果传输加密被锁定,如果您不能信任您的数据中心/网络安全性,数据仍然会泄漏出此应用程序
我们无法判断您可以信任您的网络级别,您必须自己做这件事。
请注意,如果您在问题中提到,当您转发http时,tomcat将不知道在https中建立了连接(例如:浏览器 - > Apache是https,Apache - > tomcat是HTTP)
您可以配置tomcat的连接器以假设连接是安全的(查找connector's documentation上的secure
属性),但这也意味着您绝对需要确保从不允许http连接转发到该连接器。检查AJP(一种不同的协议)是否适合您 - 它会将所有HTTP(S)连接属性正确转发给tomcat。有些人喜欢它(我在其中),有些人不喜欢。