如何让 Java 应用程序更喜欢 TLS 1.3 而不是 TLS 1.2?

问题描述 投票:0回答:1

外部系统要求任何访问它的人都应该首选 TLS 1.3。如何使我的 Java 桌面应用程序更喜欢 TLS 1.3?我使用的是 Java 17,并且使用 TLS < 1.2 is disabled using

jdk.tls.disabledAlgorithms

从搜索看来,

jdk.tls.client.protocols
可能是所需的系统属性,但它是否以某种“首选顺序”排列?例如,如果我尝试以下操作:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL
jdk.tls.client.protocols=TLSv1.3,TLSv1.2

现在会在尝试 1.2 之前先尝试 1.3 吗?这可以以某种方式验证吗?是否有必要,或者这会以某种方式模仿 Java 17 或更高版本的某些默认行为?

java java-17 tls1.3
1个回答
0
投票

我不确定这真的是编程还是开发,但是:

没有“之前”。 TLS 握手会比较两个端点支持的版本,并使用两者支持的最高版本。是的,仅支持 1.3 和 1.2,这是 16 及以上版本的默认设置,也是 11.0.11 和 8u291 及以上版本(即自 2021 年春季以来)的默认设置。

要进行验证,请使用 sysprop

javax.net.debug=ssl:handshake
打开跟踪(至少,如果需要,可以添加更多)或使用wireshark、tcpdump/snoop 或类似工具从外部捕获,并查看 ClientHello、ServerHello 和 HelloRetryRequest(如果适用)中的supported_versions 扩展。 (这也将确认外部系统是否同意1.3。)

另请注意:

jdk.tls.client.protocols
system属性,但
jdk.tls.disabledAlgorithms
中的
java.security
security属性;这些是不同的东西,并且设置方式不同。

© www.soinside.com 2019 - 2024. All rights reserved.