小编Cor*_*tor的帖子

Java 11 和 12 SSL 套接字在启用 TLSv1.3 的情况下因 handshake_failure 错误而失败

在 Java 12 中开发基于 SSL(非 HTTP)的服务器时,我遇到了让服务器和客户端一起通信的意外困难。连接总是因 handshake_failure 错误而中断。经过大量努力(最初我是在证明我的证书),由于套接字级别的 HelloWorld SSL 客户端/服务器对,我能够隔离问题:握手失败是由启用的协议中存在 TLSv1.3 引起的默认情况下在 JDK 中。

到目前为止,我避免握手错误的解决方案是完全禁用 TLSv1.3(服务器端),但我对这个解决方案并不满意。我想了解发生了什么(假设它不是 JDK 或系统中的错误,而是我的应用程序或我的环境中的错误)。

我在下面提供了一些代码。谁能检查并告诉我我做错了什么?谢谢和最好的问候。

这是我的配置:OSX 10.14 (Mojave) 我已经使用以下 Java 版本进行了测试:

编辑:我在我的测试中添加了 Java 11,这个版本也出现了问题

  • Java 8 (oracle64-1.8.0.181):没有握手失败
  • Java 10 (oracle64-10.0.2 2018-07-17):没有握手失败
  • Java 11(openjdk 版本“11.0.4”2019-07-16):握手失败
  • Java 12 (oracle64-12.0.1 2019-04-16):握手失败
  • Java 12 (openjdk 12.0.2 2019-07-16):握手失败
// HelloSSLServer.java

import java.net.*;
import javax.net.*;
import javax.net.ssl.*;
import java.io.*;

public class HelloSSLServer {

    public static void main(String args[]) throws Exception {
        int port = 1234;
        boolean needClientAuth = false;
        ServerSocketFactory factory …
Run Code Online (Sandbox Code Playgroud)

java ssl sslhandshakeexception tls1.3

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

ssl ×1

sslhandshakeexception ×1

tls1.3 ×1