PHPcURL错误(60):SSL证书问题:无法获取本地颁发者证书

时间:2016-05-16 19:22:35

标签: php ssl curl

我正在进行api调用,这似乎在抛出一些错误。所以basicall我的脚本正在使用cURL进行SOAP API post调用,它会抛出(60): SSL certificate problem: unable to get local issuer certificate

的错误

我试过了

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 

但它不起作用。

我也尝试了以下内容:

    $ch = curl_init();    // initialize curl handle
    //curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_CAINFO, "GeoTrustGlobalCA.crt");
    curl_setopt($ch, CURLOPT_URL, $ENDPOINT); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 0);          
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 50); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
    //curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    //curl_setopt($ch, CURLOPT_PORT, 80);          
    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    if ($curl_errno > 0) {
            echo "cURL Error ($curl_errno): $curl_error\n";
    } else {
            echo "Data received. To complete this transaction, enter your Bonga PIN on your handset. if you don't have one dial *126*5# for instructions\n";
            echo $data;
    }
    curl_close($ch);

似乎没有任何效果。任何解决方法?顺便说一下$ENDPOINThttps://safaricom.co.ke

1 个答案:

答案 0 :(得分:2)

该网站有几个错误,例如名称不匹配(应该是www.safaricom.co.ke  不是safaricom.co.ke)还有一个不完整的证书链,另外还有一个非常不安全的设置。难怪验证失败了。有些浏览器在使用正确的名称时起作用,因为它们可以解决丢失的链证书。其他客户端(如curl)和大多数移动浏览器都无法正常工作,因为他们希望网站能够正确设置。

有关详细信息,请参阅SSLabs report