gpt4 book ai didi

java - JDK/JRE 版本是否单独确定 SSLSocket.getSupportedProtocols() 的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:27 26 4
gpt4 key购买 nike

SSLSocket.getSupportedProtocols() 的结果是否仅由 JDK/JRE 版本决定?或者是否有任何其他配置/启动参数会影响此结果?

例如,如果应用程序运行在 JDK 1.7 update 21 上,此方法将返回 [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]。但是如果应用程序运行在不支持 SSLv3 的 JDK 1.8 上,这个方法是否只返回 [TLSv1, TLSv1.1, TLSv1.2]?

我假设这个问题的答案也适用于默认启用列表。例如,在 JDK 1.7 update 21 中,SSLSocket.getEnabledProtocols() 默认返回 [SSLv3, TLSv1]。那么在 JDK 1.8 中,默认启用列表会是 [TLSv1.1, TLSv1.2] 吗?

最佳答案

没有。

在 Java 7 之前,您只需使用 jdk.certpath.disabledAlgorithms 来禁用算法。

从 Java 7 的更高版本开始,您还拥有 jdk.tls.disabledAlgorithms。两者之间的区别似乎是 jdk.tls.disabledAlgorithms 还可以限制 TLS/SSL 版本。

jdk.tls.legacyAlgorithms 也存在。只有在拒绝所有其他允许的协议(protocol)后,才会使用此列表中的协议(protocol)。

在 Java 8u51 中,这些(在 Java 的 lib/security/java.security 文件中找到)的默认值是:

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

jdk.tls.disabledAlgorithms=SSLv3, DH keySize < 768

jdk.tls.legacyAlgorithms= \
K_NULL, C_NULL, M_NULL, \
DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
DH_RSA_EXPORT, RSA_EXPORT, \
DH_anon, ECDH_anon, \
RC4_128, RC4_40, DES_CBC, DES40_CBC

关于java - JDK/JRE 版本是否单独确定 SSLSocket.getSupportedProtocols() 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com