【问题标题】:Is the communication between httpd and tomcat secure?httpd 和 tomcat 之间的通信安全吗?
【发布时间】:2015-04-29 10:53:25
【问题描述】:

我们有一个应用在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 都将受到保护,但这可能会影响性能,因为需要 2 路加密/解密。

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

【问题讨论】:

    标签: java apache tomcat ssl encryption


    【解决方案1】:

    如果您坚持使用 localhost(例如,Apache httpd 与 tomcat 在同一台服务器上),这很可能是安全的:如果您不信任“localhost”网络的实现,则无法信任 TLS 实现同样的服务器。

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

    我们无法判断您对网络的信任程度,您必须自己做。

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

    您可以配置 tomcat 的连接器以假定连接是安全的(查找 connector's documentation 上的 secure 属性),但这也意味着您绝对需要确保永远不允许转发 http 连接到那个连接器。检查 AJP(不同的协议)是否适合您 - 它会将所有 HTTP(S) 连接的属性正确转发到 tomcat。有些人喜欢(其中包括我),有些人不喜欢。

    【讨论】:

    • 感谢@olaf-kock 的回答,我对AJP 不熟悉,但是当您说通过AJP 将所有HTTP(S) 连接的属性正确转发到tomcat 时,是不是类似以下?还是 AJP 有更简化的设置?有什么不同?在 SSL.conf 中:ProxyPass / localhost:8443 retry=0 timeout=5 ProxyPassReverse / localhost:8443 在 Server.xml 中,为 SSL 配置端口 8443:
    • secure 配置可以对 http 端口进行,例如即使 tomat 没有接收到加密连接,它也可以假设加密在相关连接上处于活动状态 - 这是在另一台服务器(如 Apache httpd)上终止 https 的用例。因此,这可以在您的 http-port 8080 或另一个端口上激活,前提是您从不使用它来代理与它的未加密连接。否则它们会被错误地标记为“安全”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多