0

任何人都知道如何在 JRE 8 中禁用 TLSv1.2 和 1.1,并且只允许使用 TLSv1。我已经尝试过 -Djdk.tls.client.protocols="TLSv1" 参数但没有运气。当我查看 SSL 调试器输出时,我可以看到仍在使用 V1.2

00E0: 05 01 04 03 04 01 03 03   03 01 02 03 02 01 02 02  ................
[Raw read]: length = 5
0000: 15 03 01 00 02                                     .....
[Raw read]: length = 2
0000: 02 28                                              .(
AWT-EventQueue-0, READ: TLSv1 Alert, length = 2
AWT-EventQueue-0, RECV **TLSv1.2 ALERT:  fatal, handshake_failure**
AWT-EventQueue-0, called closeSocket()
AWT-EventQueue-0, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
AWT-EventQueue-0, called close()
AWT-EventQueue-0, called closeInternal(true)
4

2 回答 2

3

使用SSL Labs之类的工具检查服务器与默认 Java 1.7 和 1.8 客户端的模拟握手。您看到的握手错误可能与 TLS 版本无关(因为也支持 TLSv1.0 的 TLSv1.2 客户端应该能够与仅使用 TLSv1.0 进行通信的服务器进行通信)并且很可能是由于服务器使用 Java 1.8 不再支持的密码套件(例如,RC4)。

于 2016-04-18T06:14:59.787 回答
0

考虑修改java.security文件。

根据您的机器:

安全属性的默认值是从特定于实现的位置读取的,该位置通常是 Java 安装目录中的属性文件 lib/security/java.security。

java.security

于 2021-08-12T16:01:15.900 回答