cURL错误:无法连接:已禁用SSL。错误号码35

时间:2016-01-29 11:36:55

标签: php ssl curl paypal

我正在使用Centos 7在Digital Ocean的盒子上托管我的一个应用程序中的paypal ipn脚本。

当我尝试连接到paypal沙盒api时,我收到错误“无法连接:SSL已禁用。”

我尝试过几样的事情,例如在我的php.ini文件中添加curl.cainfo的路径,就像这样      curl.cainfo = /etc/pki/tls/certs/ca-bundle.trust.crt

这是我的cURL脚本的样子

// STEP 2: Post IPN data back to paypal to validate

$ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr'); // change to [...]sandbox.paypal[...] when using sandbox to test
curl_setopt($ch, CURLOPT_SSLVERSION, 4);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'ecdhe_rsa_aes_128_gcm_sha_256'); 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

我没有太多的Linux服务器设置经验,所以我在学习,因为我一直在学习。 非常感谢任何帮助或指南

更新:当我在命令行中运行此命令时 curl --version https://sandbox.paypal.com/cgi-bin/webscr

我收到此错误 curl: (1) Protocol "https" not supported or disabled in libcurl

命令curl --version 显示curl 7.42.1 (x86_64-unknown-linux-gnu) libcurl/7.46.0

所以我猜这个新问题将是如何在libcurl中启用https?

4 个答案:

答案 0 :(得分:2)

您设置了错误的SSL版本:

curl_setopt($ch, CURLOPT_SSLVERSION, 4);

Paypal sandbox only supports TLS 1.2(CURLOPT_SSLVERSION == 6)。如果您使用PHP 5.5.19+和OpenSSL 1.0.1+,将自动使用正确的SSL版本,或者您可以使用以下内容强制使用它(仍需要OpenSSL 1.0.1 +):

curl_setopt($ch, CURLOPT_SSLVERSION, 6);

答案 1 :(得分:0)

我只希望看到Protocol "https" not supported or disabled in libcurl如果它运行的是从rpm安装的libcurl 而不是 - 或者如果配置机器故意破坏它是因为有正当理由,或者是非常无能; libcurl的Centos 7 rpm有openSSL作为要求。

了解此处发生的情况并进行修复将需要对目标主机进行root访问才能安装软件。您没有说明您对目标系统的访问权限,并且您可能需要向Digital Ocean支付费用。除非你自己打破它,否则你应该要求Digital Ocean修复它。

答案 2 :(得分:0)

我能够在一位有很多Linux经验的朋友的帮助下解决这个问题。显然这是我的Digital Ocean盒子上安装的cURL版本的问题。

所以解决方法是删除我安装的cURL版本,因为我自己构建了二进制文件,因此我没有正确安装。

我使用这些命令安装了有问题的cURL

wget -O curl.tar.gz http://curl.haxx.se/download/curl-7.42.0.tar.gz
tar -xvzf curl.tar.gz
cd curl-7.42.0
 ./configure 
make
make install

我删除了像这样的https问题的有问题的cURL

which curl

(告诉我可执行文件的位置,它位于usr/local/bin/curl

然后我做了

sudo rm -f /usr/local/bin/curl

(删除提出问题的cURL)

然后我使用了命令

sudo yum install curl php5-curl

这为我正确安装了cURL。我跑了

 curl --version

确认cURL版本现在支持https,它是。

我退出了我的Droplet并重新登录。然后尝试了

curl --version "https://sandbox.paypal.com/cgi-bin/webscr" 

命令,一切正常。我能够连接到Paypal。

感谢大家的帮助和评论。

答案 3 :(得分:-2)

我认为您需要启用fopen socket。您可以询问托管服务提供商