【发布时间】: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
标签: java ssl spring-boot undertow