【发布时间】:2011-05-28 16:06:47
【问题描述】:
在搜索完所有内容后,我无法理解为什么在我的案例中,向启用 SSL 的远程主机发出的 cURL 请求只有 50% 左右的成功率。情况如下:我有一系列 cURL 请求,所有这些请求都发送到 HTTPS 远程主机,在我使用 PHP CLI 运行的单个 PHP 脚本中。有时,当我运行脚本时,请求会成功执行,但由于某种原因,大多数时候我运行它时会从 cURL 收到以下错误:
* 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”
-
相信我,我做到了。我什至检查以确保我在 prefork MPM 中而不是工作线程中运行 Apache,因为显然存在由工作线程版本引起的与此相关的错误(我已经在运行 prefork,所以它没有帮助)。
-
坏记录MAC不是指网络接口的MAC地址。它指的是“消息验证码”的问题
标签: php ssl curl ubuntu-10.04