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