【发布时间】:2016-07-25 19:53:56
【问题描述】:
我们有一个在 java 6 下的 tomcat 中运行的旧版 Web 应用程序,升级到 7 或 8 是不可行的,因为该应用程序需要大量工作才能实现这一点,而且所需的修复太大而无法在旧版应用程序中实现。我们现在需要通过 TLS 1.2 连接出站(即作为客户端),但是 java 6 仅支持 1.0。我们使用 Apache 作为我们的网络服务器和 OpenSSL 用于传入连接,这很高兴支持 TLS 1.2 等。
有没有人必须解决类似的问题,或者您能否评论以下潜在的解决方法:
- 环回本地主机(或以其他方式重定向)并使用 OpenSSL 创建 TLS 1.2 连接,
- 实际上是一个内部代理
- openssl 可以做客户端吗?
- 我们需要 s_client 吗?
- 使用我们当前的防火墙升级连接
- 这需要有选择性
- 显然实现这将取决于防火墙
- 使用“充气城堡”(https://www.bouncycastle.org/)
【问题讨论】:
-
在 Java 6 下运行的应用程序不太可能无法在 JRE 7 下运行。您尝试过吗? Bouncy Castle 可能是一个不错的选择,因为它可以透明地替换 JRE 中的安全提供程序,但您必须进行大量测试以确保兼容性。
-
我们尝试了 java 7,但它坏了。回归测试在很大程度上是自动化的,因此问题不大。
-
AFAIK,JDK 6 不再接收安全更新,因此使用它不是一个好主意。即使它确实得到了更新,由于 Java 的 TLS 实现存在许多问题,我不会将 Java 用于 TLS 服务器。将 nginx 作为反向代理/TLS 终结器放在 Tomcat 前面,让 nginx 处理 TLS。