我正在评估一些SSL失败,并注意到,当我使用curl到其中一个失败的站点时,我得到了curl: (56) SSL read: errno -5961 ; 然而,我的谷歌查询该错误没有显示openssl失败的原因。
问题 :当curlcurl失败时,这意味着什么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 ~]$
注 :
我正在回答自己的问题,希望帮助未来的谷歌。
问题的根本原因是第2层MTU不匹配,导致openssl套接字在curl事务中超时。 完整的MTU大小的数据包(即1500字节IP有效载荷)失败,因为layer2隧道的一端不允许它们通过。
其他人看到这个错误可能没有MTU不匹配,但它可能是任何导致SSL会话通过curl超时的一部分。