我将我的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来实现这一点,但到目前为止我还没有.