在 SSL Client Hello 之后,Undertow(我认为)关闭连接

Posted

技术标签:

【中文标题】在 SSL Client Hello 之后,Undertow(我认为)关闭连接【英文标题】:Undertow (I think) closes connection after SSL Client Hello 【发布时间】:2018-03-21 10:49:12 【问题描述】:

我正在尝试在 Debian Stretch 生产服务器上设置我的 springboot 应用程序。应用程序使用 TLS 1.2 和 HTTP2,因此我使用嵌入式 Undertow 运行它,它在 Windows 上完美运行,但它似乎只是在 Linux 上的 Client Hello 后断开连接。 这是在wireshark中的样子:

我能够通过不安全的 http/1.1 进行连接,但没有任何问题。我很确定它与 TLS 有关,因为在 application.properties 中关闭它可以让 Undertow 回退到 http/1.1。 (不过我需要多路复用)

而且我找不到任何可能导致这种行为的东西。这不是密钥库,因为我在 Java 中没有错误。

我唯一需要从 Windows 更改的是 JVM 参数,我必须更改以使其使用 IPv4:

java -Xbootclasspath/p:/home/dptools/alpn-boot-8.1.11.v20170118.jar -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses -jar dpTools-0.0.1-SNAPSHOT.jar

【问题讨论】:

数据包捕获在哪里?我假设在客户端。请在服务器端进行并行数据包捕获,以验证 FIN 实际上是由服务器引起的,而不是由中间的一些深度数据包检查中间盒(如防火墙)引起的。 @SteffenUllrich 确实是在客户端拍摄的,但服务器端的 tcpdump 也捕获了它。 puu.sh/xUshC/77b51ab95e.png 【参考方案1】:

原来它毕竟是密钥库,不完全是密钥库,而是里面的密钥对。显然将特殊字符放在别名中并不是一个好主意。切换到字母数字别名后,它可以工作。我担心的是套接字绑定没有任何错误。

【讨论】:

以上是关于在 SSL Client Hello 之后,Undertow(我认为)关闭连接的主要内容,如果未能解决你的问题,请参考以下文章

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3/TLS write client hello

Puma::MiniSSL::SSLError: OpenSSL error: error:1417A0C1:SSL routines:tls_post_process_client_hello:no

使用 GoLang 获取 TLS 的 Client Hello Info

PayPal API 的“无可用协议”SSL 问题

详解SSL证书中的SSL握手协议

HTTPS协议详解:TLS/SSL握手过程