网络又双叒叕出问题了,烦人。
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 连接请求失败。所附数据包含服务器证书。
排查
- wireshark,看 TLS 对端 [Certificates] [Server Key Exchange] [Server Hello Done] 之后发生了什么;
- 看到紧接着 DNS 查询
ocsp.int-x3.letsencrypt.org
,得到 IPaxxx.dscq.akamai.net [x.x.x.x]
; - 再往后看,TCP [SYN] 无响应,四次重传(1s、3s、7s、15s)后放弃;
- a. 理论 SYN 报文段的重传次数,MaxSynRetransmissions.
- b. 可以通过
Get-NetTCPSetting
查看 TCP 设置.
结论
诚如 Schannel - 36876 所述,OCSP 无响应,故 TLS 握手失败,发出 TCP [FIN, ACK] 结束握手。
且 OSCP 查询会有缓存,失败后一段时间直接返回失败,不做等待。
附录
- 设置 powershell 输出编码
[Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8