0

我正在尝试从 Windows 浏览器访问 SSL URL 到另一台运行 Tomcat 的机器,我在 Windows 机器上的系统事件日志中看到来自 Schannel 的错误 36887,并带有以下描述:

TLS 协议定义的致命警报代码为 70

根据 MS 文档: 质谱文档

我在 Windows 机器上打开了 Schannel 日志记录(最大 = 7),我可以看到 SSL 握手已正确协商,这来自事件日志:

An SSL server handshake completed successfully. The negotiated cryptographic parameters are as follows.
  Protocol: TLS 1.2
  CipherSuite: 0xC028
  Exchange strength: 256

这似乎与代码 70 错误相矛盾。

密码套件 0xC028 是 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384。我在 Tomcat 机器上进行了检查,可以看到这是可用的,并且两台机器上也都启用了 TLS1.2,因此成功的握手是有意义的。

与代码 70 错误关联的进程 ID 属于 lsass.exe - 我的 Windows 知识非常有限,所以我不知道它是做什么的。

我在 Tomcat 机器上的 catalina.out 日志中找不到任何东西,代码 70 似乎是在实际发送请求之前发生的。我确信证书都配置正确,因为我可以从其他机器成功访问 URL。

我该如何从这里进步?

4

2 回答 2

0

这意味着尝试使用可识别但不受支持的 TLS 版本与服务器进行通信。例如,如果您的服务器设置为仅接受使用 TLS 1.2 或更高版本的通信,那么任何尝试通过 TLS 1.1 或更低版本进行通信的东西都会引发此错误。

两台计算机必须在通信方法上达成一致才能真正进行通信。这就是为什么会出现此错误消息,然后计算机似乎可以正常通信的原因......第一种方法被尝试并被拒绝,然后新的方法被尝试并成功,仅此而已。

于 2022-02-21T19:46:02.363 回答
0

问题原来是我们的一个客户端应用程序使用 .NET 4.5.2 并默认为 TLS1.1,它已在服务器端通过一些修补程序禁用。最终 .NET 更新到 4.7.2 解决了这个问题。

于 2022-02-25T11:15:35.657 回答