为了账号安全,请及时绑定邮箱和手机立即绑定

osx 10.10 CURL POST到HTTPS url给出SSLRead()错误

osx 10.10 CURL POST到HTTPS url给出SSLRead()错误

C++
慕桂英546537 2019-12-12 14:10:04
我最近才升级到OSX 10.10 Yosemite,由于升级,我无法再将Curl POST转换为SSL url。我首先使用了wordpress的wp_remote_request调用,还尝试在php中使用curl。两者(按预期)给出相同的错误消息:错误号:56错误字符串:SSLRead()返回错误-9806注意:当我将POST卷曲到HTTP时,它可以正常工作。我认为这是PHP.ini或apache中的设置(升级后丢失了原始的HTTPD.conf文件...)。谁能帮我吗?
查看完整描述

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

此SSL错误(OSStatus代码:9806)意味着由于建立连接时发生错误(例如,在某些无效命令上),服务器终止了您的连接。这似乎仅在到远程主机的SSL连接介于两者之间时才发生。


SSL手册(SSL_get_error)没有对此进行详细说明,但是此错误消息来自libcurlSecureTransport / Darwinssl TLS后端使用的内置消息(您可以在SecureTransport.h头文件中找到其OSStatus ):


errSSLClosedAbort           = -9806,    /* connection closed via error */

根据我的经验,这通常发生在您位于代理后面或连接到使用身份验证机制的受限网络时。


因此,请确认您已通过WiFi连接到正确的网络,并且其他HTTPS正常运行。如果不是,请检查是否需要指定代理凭据,或者您的ISP是否覆盖了证书链并需要某种身份验证,或者它基本上阻止了对其防火墙中某些站点的访问。



查看完整回答
反对 回复 2019-12-13
?
临摹微笑

TA贡献1982条经验 获得超2个赞

我也有类似的SSLRead() return error -9806错误问题,也有SSL Version => SecureTransport。


但就我而言,问题是我设置了curl CURLOPT_HTTP_VERSION选项:


$curl = curl_init();    

curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

如果删除该选项,则cURL将决定默认使用哪个版本。有关更多信息,请参见curl_setopt文档。


这对我有用,并且我不需要使用cURL或PHP进行任何更改。但这是error -9806出现的许多情况之一的解决方案。



查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 311 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信