【问题标题】:ssl cURL - convert terminal curl command to PHP scriptssl cURL - 将终端 curl 命令转换为 PHP 脚本
【发布时间】:2016-03-20 22:30:27
【问题描述】:

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

curl -H "Content-Type: application/json" --cert 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 证书”。

我做错了什么?

【问题讨论】:

    标签: php ssl curl


    【解决方案1】:

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

    【讨论】:

    • SSL 证书的创建现在是正确的,因为在我做错之前,我的 curl 请求在终端和 php 中都不起作用。现在有了新证书,我在终端上的 curl 请求可以正常工作,但在 PHP 中什么也没有。我到底应该怎么做?
    猜你喜欢
    • 2016-11-12
    • 2014-04-12
    • 2016-03-07
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多