2013-06-21 23 views
0

我正在使用cURL使用CURLOPT_POST发送一些数据。相同的代码工作正常之前,但移动到一个新的服务器后,cURL不再通过https工作。来自其他站点的人(domain.com)向我发送了日志文件,并且他们没有收到任何内容。然后,我试图与curl_error()得到一个错误,我面临一个SSL问题,但不知道如何解决它。移动到新服务器后cURL的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。你可以从代码中看到,我不需要回报。那么,在这种情况下,我是否也应该拥有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 
     ) 

) 

回答

2

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

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

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

+0

我应该自己做还是最好联系托管公司? – enenen

+0

你可以自己做,这是用户可配置的空间。 – DevZer0

+0

我的网站根本没有SSL。其他网站有。我发送的数据如“发送并忘记”,即不需要返回。在这种情况下双方是否都需要SLL?当服务器请求它需要 – enenen

相关问题