【问题标题】:How to enable SSL communication between two Apache Tomcat servers如何在两个 Apache Tomcat 服务器之间启用 SSL 通信
【发布时间】:2012-07-25 08:27:17
【问题描述】:

我有两个计算机系统,每个系统都有一个 apache 服务器。一台机器是客户端机器,另一台是服务器机器。我希望客户端请求和服务器响应都被加密,从而使数据传输安全。

有人可以就我如何在这方面取得进展提供指点/步骤。 通信不涉及任何 GUI 组件,这意味着通信纯粹是后端。

客户端和服务器都是用java编写的。我正在使用 Axis2 和 jaxws 进行通信。

目前我能够在不启用 SSL 的情况下发送客户端请求并接收服务器响应。现在如果我启用 SSL 是否意味着我也应该根据 SSL 修改现有代码或当前工作代码仍然有效。

【问题讨论】:

  • 您的客户端机器上运行着什么样的客户端?它是在第一台服务器中运行的 PHP 脚本吗,第一台服务器是反向代理吗?您已使用 (Apache) Tomcat 对此进行了标记。其中一台机器是否也在使用 Apache Httpd?哪一个?
  • 糟糕。对不起。客户端和服务器都是用java编写的。

标签: web-services tomcat ssl client-server ssl-certificate


【解决方案1】:

这里有很多选择。既然你提到 SSL... 在每台服务器上生成一个非对称密钥对(RSA 2048 是一个安全的选择)。然后在每台服务器上创建一个自签名证书。然后将每个证书复制到另一台机器上,并将其标记为受 apache 正在使用的 Java 环境的信任,并且 NONE OTHER 是受信任的。在每个 apache 上配置 SSL/TLS 以使用良好的对称密码(3DES 是一个安全的选择,但如果您想要领先优势,还有其他较新的密码)。接下来确保 Tomcat 服务器之间的所有访问都是通过 https URL 进行的,并且您的状态应该不错。

另一种方法是使用 IPSEC 通过证书或其他信任库在两台服务器之间建立静态隧道。

【讨论】:

  • 目前我可以在不启用 SSL 的情况下发送客户端请求并接收服务器响应。现在如果我启用 SSL 是否意味着我也应该根据 SSL 修改现有代码或当前工作代码仍然有效。
  • 除了将 URL 更改为 https 而不是 http,您不需要更改代码,只需更改 apache 配置即可。
【解决方案2】:

一个相当简单的选择是使用stunnel,它可以通过大多数*NIX 系统上的标准包管理器获得。您将 stunnel 配置为一台服务器上的客户端(如果您使用服务器),然后将另一台服务器配置为服务器(如果您愿意,还可以配置客户端),然后将您的 Tomcat 实例配置为连接到 localhost:XYZ ,其中 XYZ 是端口stunnel 在哪里听。

使用stunnel 的好处在于您可以使用它来隧道任何协议:它既不是 Tomcat 特定的技术也不是 Java 特定的技术,因此您可以将它用于同一环境中的其他应用程序,如果您想要。

【讨论】:

  • 考虑到 Java(和 Tomcat)开箱即用地支持 HTTPS,这有点令人费解。
  • OP 询问 Tomcat -> Tomcat 通信,这不是开箱即用支持的东西,HTTPS 与否。如果您想让一个 Tomcat 通过 HTTPS 与另一个 Tomcat 联系,则需要为服务器配置 SSL(受支持)但随后需要将客户端配置为使用 SSL 进行连接(Tomcat 根本不处理,并且配置必须是完全分开完成)。
  • 好吧,想必,在 Tomcat 中运行的 webapp 使用的是 Java(根据问题是 Axis2/JAX-WS),因此将该客户端配置为使用 https:// 更自然。使用stunnel 将使其首先与隧道建立本地连接,这是不必要的。在 webapp 中配置信任库同样简单。
  • 很公平。随意发布您自己的答案。
  • 目前我可以在不启用 SSL 的情况下发送客户端请求并接收服务器响应。现在如果我使用建议的方法,是否意味着我也应该相应地修改现有代码或当前工作代码仍然有效。
猜你喜欢
  • 2020-05-28
  • 2014-11-09
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2016-08-10
  • 1970-01-01
相关资源
最近更新 更多