我们有一个运行在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 (e.g.port 8443),并将来自443的请求代理到安全的tomcat端口8443?所以从客户端到httpd再到tomcat都是安全的,但是这可能会影响性能,因为需要双向加密/解密。
我们一直在寻找这个问题,但没有找到明确的答案。任何帮助都是非常感谢的。
发布于 2015-04-29 19:51:47
如果您坚持使用localhost (例如,将Apache httpd与tomcat放在同一台服务器上),这很可能是安全的:如果您不信任"localhost“网络的实现,那么也不能信任同一台服务器上的TLS实现。
如果将Apache放在与tomcat不同的服务器上,可能会提高性能。在这种情况下,您显然依赖于两者之间的网络:路由器、布线等。如果您不信任您的网络,这可能是您可以解决的问题。但是,请注意,您可能在tomcat和文件系统(临时文件)、数据库等之间也有一些连接-使用传输加密,如果您不能信任您的数据中心/网络安全,数据仍然可能泄漏出此应用程序。
我们不能判断你可以信任你的网络到什么程度,你必须自己去做。
请注意,在您在问题中提到的情况下,当您只是在http上转发时,tomcat将不知道已经在https中建立了连接(例如: Browser -> Apache is https,Apache -> tomcat is http)
您可以将tomcat的连接器配置为假定连接是安全的(查看connector's documentation上的secure属性),但这也意味着您绝对需要确保永远不允许将http连接转发到该连接器。检查AJP (一种不同的协议)是否适合您-它会将所有HTTP(S)连接的属性正确地转发到tomcat。有些人喜欢它(我也在其中),有些人不喜欢。
https://stackoverflow.com/questions/29941595
复制相似问题