php - ssl cURL - 将终端 curl 命令转换为 PHP 脚本

标签 php ssl curl

我有这个可以正常工作的终端 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 证书”。

我做错了什么?

最佳答案

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

关于php - ssl cURL - 将终端 curl 命令转换为 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284043/

相关文章:

php - 尽管正确构建了查询,但 mysqli_query 无法在 php 中工作

php - Mysql根据一张表的ID从2张表中选择数据

php - 是否可以使用 curl php 库和 paypal 购买产品?

php - preg_match 返回通知 : Undefined offset

PHP 命名空间和全局自动加载单个文件

php - 检查 $_POST 数据

C#:监控连接

c - librdkafka 消费者和 ssl 配置

PHP - 无法连接到 FTP - 隐式 SSL 端口 990

php - 无法获取用于使用 PHP cURL 登录的 .ASPXAUTH cookie 值