【问题标题】:Using TLS 1.2 from java 6使用来自 java 6 的 TLS 1.2
【发布时间】: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。

标签: ssl java tomcat


【解决方案1】:

不要为此使用 openssl 的 s_client - 它很慢,并且更多地用于调试/测试。

尝试使用stunnel。它专为像您这样的用例而设计,您可以找到大量示例配置来帮助您入门。您需要确保在配置中包含 sslVersion = TLSv1.2 指令以强制使用 TLS 1.2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多