网络又双叒叕出问题了,烦人。

TLS

handshake failure,OCSP

现象

使用 aria2 下载文件时,发生错误,记录如下:

Exception: [AbstractCommand.cc:351] errorCode=1 URI=https://xxxxxxxxxxxxxxxxxxxxxxxxxxx
  -> [SocketCore.cc:1021] errorCode=1 SSL/TLS handshake failure: Error: 由于吊销服务器已脱机,吊销功能无法检查吊销。
(80092013)

先打开 openssl s_client 并加上 CAfile 试探下,验证通过(Verification: OK)。

然后,使用 aria2 的 --log 选项,在日志文件中发现 WinTLSSession 字眼。 在 Windows 日志中,有 Schannel 相关错误记录,关联的 MS Docs 为 event-id-36876

来源:Schannel
事件 ID:36876
信息:尚未正确验证从远程服务器收到的证书。错误代码是 0x80092013。TLS 连接请求失败。所附数据包含服务器证书。

排查

  1. wireshark,看 TLS 对端 [Certificates] [Server Key Exchange] [Server Hello Done] 之后发生了什么;
  2. 看到紧接着 DNS 查询 ocsp.int-x3.letsencrypt.org,得到 IP axxx.dscq.akamai.net [x.x.x.x]
  3. 再往后看,TCP [SYN] 无响应,四次重传(1s、3s、7s、15s)后放弃;
    • a. 理论 SYN 报文段的重传次数,MaxSynRetransmissions.
    • b. 可以通过 Get-NetTCPSetting 查看 TCP 设置.

结论

诚如 Schannel - 36876 所述,OCSP 无响应,故 TLS 握手失败,发出 TCP [FIN, ACK] 结束握手。

且 OSCP 查询会有缓存,失败后一段时间直接返回失败,不做等待。

附录

  1. 设置 powershell 输出编码
[Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8

Published

Category

network

Tags

Contact