ssl cURL - 将terminal curl命令转换为PHP脚本

时间:2015-12-15 08:18:46

标签: php ssl curl

我有这个终端curl命令正常工作

curl -H“Content-Type:application / json”--cece cert.p12:myPassword -X POST -d'myJsonData'https://api-applecareconnect-ept.apple.com/enroll-service/1.0/bulk-enroll-devices

我已经转换了这样的命令:

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSLCERT, "cert.p12"); 
    curl_setopt($ch, CURLOPT_SSLCERTTYPE, "P12"); 
    curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "myPassword");
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $myJsonData);
    $ret = curl_exec($ch);

    if(empty($ret)) { echo 'error: nothing returned'; } else { echo 'success!'; }

    echo $ret;
    if($errno = curl_errno($ch)) {
         $error_message = curl_strerror($errno);
         echo "cURL error ({$errno}):\n {$error_message}";
    }
    curl_close($ch);

但我收到错误“访问被拒绝。需要客户端SSL证书“。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

对于SSL_VERIFYHOST对于“2”,您必须确保SSL证书中的公用名与正在使用的主机名匹配。这是默认设置,只要您为正在使用的主机名(通用名称)正确创建SSL证书,这应该是直接的