【问题标题】:Java 8 Cipher Suites downgraded with later update?Java 8 Cipher Suites 降级后更新?
【发布时间】:2022-07-27 16:47:45
【问题描述】:

根据https://java.com/en/configure_crypto.html,该网站表示“对于 TLS 1.3,TLS_AES_256_GCM_SHA384 现在将优先于 TLS_AES_128_GCM_SHA256。”但随着后来的更新,TLS_AES_256_GCM_SHA384 不再作为受支持的套件提供。

有没有办法启用比默认启用的套件更多的套件?如TLS_CHACHA20_POLY1305_SHA256在更新204中添加并启用;但不再在最新更新中。

密码套件在 1.8 更新 301 上转储

 1. TLS_AES_256_GCM_SHA384
 2. TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
 3. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
 4. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
 5. TLS_RSA_WITH_AES_256_GCM_SHA384
 6. TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
 7. TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
 8. TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
 9. TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
 10. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
 11. TLS_RSA_WITH_AES_128_GCM_SHA256
 12. TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
 13. TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
 14. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
 15. TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
 16. TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
 17. TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
 18. TLS_RSA_WITH_AES_256_CBC_SHA256
 19. TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
 20. TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
 21. TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
 22. TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
 23. TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
 24. TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
 25. TLS_RSA_WITH_AES_256_CBC_SHA
 26. TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
 27. TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
 28. TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 29. TLS_DHE_DSS_WITH_AES_256_CBC_SHA
 30. TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
 31. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
 32. TLS_RSA_WITH_AES_128_CBC_SHA256
 33. TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
 34. TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
 35. TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
 36. TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
 37. TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
 38. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
 39. TLS_RSA_WITH_AES_128_CBC_SHA
 40. TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
 41. TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
 42. TLS_DHE_RSA_WITH_AES_128_CBC_SHA
 43. TLS_DHE_DSS_WITH_AES_128_CBC_SHA
 44. TLS_EMPTY_RENEGOTIATION_INFO_SCSV

密码套件在 1.8 更新 311 上转储

 1. TLS_AES_128_GCM_SHA256
 2. TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
 3. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
 4. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
 5. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
 6. TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
 7. TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
 8. TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
 9. TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
 10. TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
 11. TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
 12. TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
 13. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
 14. TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
 15. TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
 16. TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
 17. TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
 18. TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
 19. TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
 20. TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
 21. TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
 22. TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
 23. TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
 24. TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
 25. TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
 26. TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
 27. TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
 28. TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
 29. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
 30. TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 31. TLS_DHE_DSS_WITH_AES_256_CBC_SHA
 32. TLS_DHE_RSA_WITH_AES_128_CBC_SHA
 33. TLS_DHE_DSS_WITH_AES_128_CBC_SHA
 34. TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
 35. TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
 36. TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
 37. TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
 38. TLS_RSA_WITH_AES_256_GCM_SHA384
 39. TLS_RSA_WITH_AES_128_GCM_SHA256
 40. TLS_RSA_WITH_AES_256_CBC_SHA256
 41. TLS_RSA_WITH_AES_128_CBC_SHA256
 42. TLS_RSA_WITH_AES_256_CBC_SHA
 43. TLS_RSA_WITH_AES_128_CBC_SHA
 44. TLS_EMPTY_RENEGOTIATION_INFO_SCSV

【问题讨论】:

  • 在我的 8u301 和 8u311 上,默认启用列表是 45 个条目,编号为 0 到 44。您似乎正在打印 #1-44 但不是 #0,它在 8u301 中省略了 TLS_AES_128_GCM_SHA256,在 8u311 中省略了 TLS_AES_256_GCM_SHA384。你的意思是更新 204 到 8,如果是,你在哪里看到的?我每个月都会查看 Oracle 网站,我在 19 年 1 月得到 8u201,202,在 19 年 5 月得到 8u211,212,但两者之间没有,www.oracle.com/java/technologies/downloads/archive 中也没有这样的版本/ 现在,我见过的没有 8 个有 CHACHA。
  • @dave_thompson_085 bugs.openjdk.java.net/browse/…;但它可能是被反向移植的openjdk。不过我可能看错了;浏览日志;它可能只是针对 jdk 11。另外,您在 45 个条目上是对的;我不小心用 1 开始了 for 循环;有趣的是 okhttp 如何支持square.github.io/okhttp/3.x/okhttp/okhttp3/…;不确定它是在 java8 上还是更高版本。我会调查的。

标签: java ssl tls1.2 tls1.3


【解决方案1】:

不久前我遇到了同样的问题 - 我下载了最新版本的 Java OpenJDK 来替换我当前的版本,当我检查密码时 TLS_AES_256_GCM_SHA384 丢失了。我尝试了来自 Amazon 和 AdoptOpenJDK 的不同版本的 Java,但它们都缺少 TLS_AES_256_GCM_SHA384,尽管它在他们的网站上列为受支持。 事实证明,追查原因相当简单。我保持下面的说明相当通用,因为您可能使用的是 Windows/Linux,但原则是这里的关键。

  • 首先,下载最新的 Java 版本,例如1.8.0_342 到一个临时文件夹(我下载的是 .zip 文件而不是 .msi 文件)。

  • 解压压缩包

  • 转到 \bin 文件夹

  • 运行这一行命令以列出这个新 java 版本中的所有密码

    jrunscript -e "java.util.Arrays.asList(javax.net.ssl.SSLServerSocketFactory.getDefault().getSupportedCipherSuites()).stream().forEach(println)"

  • 这将产生一个密码列表,例如

TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_EXPORT_WITH_RC4_40_MD5
TLS_KRB5_WITH_RC4_128_SHA
TLS_KRB5_WITH_RC4_128_MD5
TLS_KRB5_EXPORT_WITH_RC4_40_SHA
TLS_KRB5_EXPORT_WITH_RC4_40_MD5\

  • 这个新的 Java 版本确实包含预期的 TLS_AES_256_GCM_SHA384
  • 因此,我的应用程序使用的旧 Java 在我上次升级时一定没有正确更新(可能是应用程序正在使用的文件)。
  • 停止所有使用旧 Java 版本的进程,并删除旧 java 文件夹的内容,包括子文件夹
  • 从临时区域复制新的 Java 版本。
  • 正常启动应用并检查是否存在任何握手错误。
  • 转到您刚刚将新 Java 版本复制到的区域并在 \bin 文件夹中重复相同的一行以检查密码列表 - 它应该仍然列出 TLS_AES_256_GCM_SHA384。

所以一个相当简单的修复 - 只需确保在安装新 Java 版本时首先完全清除旧文件夹内容。

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2023-03-22
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    相关资源
    最近更新 更多