我正在评估一些 SSL 故障,并注意到当我使用curl
其中一个故障站点时,我得到了curl: (56) SSL read: errno -5961
;但是,我对该错误的谷歌查询并没有显示 openssl 故障的原因。
问题:当 curl 失败时意味着什么curl: (56) SSL read: errno -5961
?
我附上了curl
下面的完整内容...
[mpenning@mpenning-lnx ~]$ curl -vk https://192.0.2.168/
* About to connect() to 192.0.2.168 port 443 (#0)
* Trying 192.0.2.168... connected
* Connected to 192.0.2.168 (192.0.2.168) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* skipping SSL peer certificate verification
* SSL connection using TLS_RSA_WITH_AES_256_CBC_SHA
* Server certificate:
* subject: CN=foo-console,L=New York,OU=IT Infrastructure,O=Sesame Street
* start date: Aug 21 23:36:51 2013 GMT
* expire date: Aug 21 23:36:51 2015 GMT
* common name: foo-console
* issuer: CN=foo-console,L=New York,OU=IT Infrastructure,O=Sesame Street
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: 192.0.2.168
> Accept: */*
>
< HTTP/1.1 200 OK
* SSL read: errno -5961
* Closing connection #0
curl: (56) SSL read: errno -5961
[mpenning@mpenning-lnx ~]$
答案1
摘要:curl: (56) SSL read: errno -5961
表示 SSL 会话由于某种原因超时。
在我的案例中,根本原因是第 2 层 MTU 不匹配,这导致 openssl 套接字在 curl 事务过程中部分超时。全 MTU 大小的 TCP 数据包(即 1500 字节 IP 有效负载)失败,因为第 2 层隧道的一侧不允许它们通过。
其他人可能会因为不同的原因看到 OpenSSL 超时,但关键是要知道此错误是由于 OpenSSL 超时造成的。