0

我正在使用 cURL 来发送一些数据CURLOPT_POST。相同的代码之前运行良好,但在移动到新服务器后 cURL 不再通过https. 来自其他站点 ( domain.com) 的人向我发送了日志文件,但他们没有收到任何信息。然后我试图得到一个错误,curl_error()我遇到了一个 SSL 问题,但不知道如何解决它。

代码:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'https://track.domain.com/api.php'); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 
curl_exec($ch);
$error = curl_error($ch); 
curl_close($ch);

错误是:

SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我在谷歌上搜索了这个,但不明白问题是什么。

我的域需要 SSL 证书吗?我不确定旧服务器中是否有 SSL。从代码中可以看出,我不需要return。那么,在这种情况下,我也应该有 SSL 吗?

我需要domain.com证书吗?

我是否需要联系托管公司以重新编译带有 SSL 支持的 cURL?

有任何想法吗?


注意:我不希望通过设置CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOSTfalse


curl_version():

Array
(
    [version_number] => 464896
    [age] => 3
    [features] => 34333
    [ssl_version_number] => 0
    [version] => 7.24.0
    [host] => i686-pc-linux-gnu
    [ssl_version] => OpenSSL/0.9.8b
    [libz_version] => 1.2.3
    [protocols] => Array
        (
            [0] => dict
            [1] => file
            [2] => ftp
            [3] => ftps
            [4] => gopher
            [5] => http
            [6] => https
            [7] => imap
            [8] => imaps
            [9] => pop3
            [10] => pop3s
            [11] => rtsp
            [12] => smtp
            [13] => smtps
            [14] => telnet
            [15] => tftp
        )

)
4

1 回答 1

2

下载 Mozilla 的bundle文件,命名为mozilla.pem

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); 
curl_setopt($ch,CURLOPT_CAINFO,'mozilla.pem'); 

问题是您的 CA(证书颁发机构)列表没有远程站点证书的颁发者。如果您尝试连接到具有自签名证书的服务器,此方法将无法解决。

于 2013-06-21T08:51:32.427 回答