php – Mac OS X 10.9未知的SSL协议错误

我将我的mac OS更新为OS X 10.9.
OS X 10.9 / Apache 2.2.24 / PHP 5.4.17
现在尝试通过cURL连接到我们的远程服务器时收到错误(连接到…的未知SSL协议错误).

DEFINE("SSL_CERTTYPE", "PEM");  
DEFINE("SSL_KEYPASS", "xxxxxxxxx");
DEFINE("SSL_CERT", $_SERVER['DOCUMENT_ROOT']."/certs/mycert.pem"); 
DEFINE("SSL_KEY", $_SERVER['DOCUMENT_ROOT']."/certs/mycert.key");

$options = array
(
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => false,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_VERBOSE        => false,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSLCERT        => SSL_CERT,
    CURLOPT_SSLKEY         => SSL_KEY,
    CURLOPT_SSLKEYPASSWD   => SSL_KEYPASS,
    CURLOPT_SSLCERTTYPE    => SSL_CERTTYPE,
);

我已经尝试将SSLVERSION设置为2和3,但我仍然得到错误.

不确定这是Apache还是PHP问题.任何指导将不胜感激.
*值得注意的是,这是在更新之前的10.8工作.

解决方法:

这实际上与卷曲:http://curl.haxx.se/mail/archive-2013-10/0036.html有关

显然Apple从OpenSSL迁移到他们自己的安全传输协议,这似乎已经破坏了curl对客户端证书的处理(如果连接需要).到目前为止,我发现的唯一解决方法是删除客户端证书要求,遗憾的是这并不理想.

– 更新 –

看起来好像你应该能够使用Keychain Access来实现这一点,但到目前为止我还没有.

上一篇:[知乎]自己真是Know Nothing 历史上有哪些细思恐极的事件?


下一篇:深入详解美团点评CAT跨语言服务监控(三)CAT客户端原理