【发布时间】:2018-09-07 14:35:10
【问题描述】:
我的 .Net 客户端连接到 Java 服务器时出现问题,两者都从 TLS1 更改为 TLS1.2。 客户端和服务器在同一台机器上,Windows10 64位。
.Net 客户端在 .Net Framework 4.5 下创建,使用 HttpWebRequest。 之前我设置的请求调用
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.Net 错误“请求被中止:无法创建 SSL/TLS 安全通道。”
Java 使用 jdk1.8.0_25 Java 错误日志:
P-86, received EOFException: error
P-86, handling exception: javax.net.ssl.SSLHandshakeException: Remote host
closed connection during handshake
%% Invalidated: [Session-1, TLS_RSA_WITH_AES_128_CBC_SHA256]
P-86, SEND TLSv1.2 ALERT: fatal, description = handshake_failure
P-86, WRITE: TLSv1.2 Alert, length = 2
[Raw write]: length = 7
0000: 15 03 03 00 02 02 28 ......(
P-86, called closeSocket()
P-86, called close()
P-86, called closeInternal(true)
我已更改为不同的密码,但没有成功。有什么建议可以遵循吗? 谢谢
【问题讨论】:
-
你最好将它们移动到不同的机器上,然后使用 Wireshark 之类的工具来捕获 TLS 握手。这应该给你更多的数据来检查,而不是现在来自 Java 端的有限日志条目。 .NET 网络跟踪可能也有帮助,docs.microsoft.com/en-us/dotnet/framework/network-programming/…,但与 Wireshark 捕获相比,它很难分析。
-
作为附加信息,我尝试使用 TLSv1.1 并且它有效。
-
TLS 1.0/1.1/1.2 是不同的东西(例如不同的密码),所以请关注 1.2 的问题。