全部搜索后,我不明白为什么向远程启用SSL的主机发出的cURL请求在我的情况下只有50%左右的时间成功。情况如下:我使用PHP CLI运行的单个PHP脚本中有一系列cURL请求,它们全部发给HTTPS远程主机。偶尔当我运行的请求成功执行,但由于某些原因大多数时候我运行的脚本,我从卷曲以下错误:cURL/PHP请求执行50%的时间
* About to connect() to www.virginia.edu port 443 (#0)
* Trying 128.143.22.36... * connected
* Connected to www.virginia.edu (128.143.22.36) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac
* Closing connection #0
如果我再试了几次,我得到了相同的结果,但在几次尝试后,请求将成功完成。之后再次运行脚本会导致错误,并且该模式会继续。研究错误'alert bad record mac'并没有给我带来任何帮助,而且我仍然毫不犹豫地将它归咎于SSL问题,因为脚本仍然偶尔运行。
我在Ubuntu Server 10.04上安装了php5和php5-curl,以及最新版本的openssl。根据cURL特定选项,CURLOPT_SSL_VERIFYPEER设置为false,并且CURLOPT_TIMEOUT和CURLOPT_CONNECTTIMEOUT都设置为4秒。进一步说明这个问题的事实是,在我的Mac OS X开发机器上出现同样的情况 - 请求只经历了大约50%的时间。
您可能想Google“错误140943FC” – 2010-12-21 07:10:46
相信我,我做到了。我甚至检查过,以确保我在prefork MPM中运行Apache,而不是工作线程,因为显然有一个与工作线程版本相关的错误(我正在运行prefork,所以它没有帮助)。 – mquinn 2010-12-21 10:57:40
错误记录MAC不引用网络接口的MAC地址。它指的是“消息认证码” – 2012-12-18 03:26:13