4

我将我的 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 上运行的。

4

1 回答 1

3

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

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

- 更新 -

似乎您应该能够使用 Keychain Access 来使其正常工作,但到目前为止我还无法做到。

于 2013-10-24T20:17:13.447 回答