我有这个终端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证书“。
我做错了什么?
答案 0 :(得分:0)
对于SSL_VERIFYHOST对于“2”,您必须确保SSL证书中的公用名与正在使用的主机名匹配。这是默认设置,只要您为正在使用的主机名(通用名称)正确创建SSL证书,这应该是直接的