当前位置: 首页 > 知识库问答 >
问题:

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

萧焱
2023-03-14

我有一个终端卷曲命令可以正常工作

curl-H“内容类型: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证书”。

我做错了什么?

共有1个答案

何琨
2023-03-14

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

 类似资料:
  • 问题内容: 我从来没有做过卷曲,所以需要一些帮助。我已经尝试通过示例来解决这个问题,但是我无法理解! 我有一个curl命令,可以从linux(ubuntu)命令行成功运行,该命令行通过api将文件放入Wiki。 我需要将此curl命令合并到我正在构建的PHP脚本中。 如何转换curl命令,使其在PHP脚本中起作用? cookie.txt包含身份验证,但是我不会在脚本中将其以明文形式出现,因为这将仅

  • 我想将命令行cURL转换为PHP cURL,以便更好地控制。 请注意,它包括使用MYUSER和MYTOKEN进行身份验证。 Linux服务器正在运行Apache 2和PHP 7.2。 您会使用什么PHP代码来获得相同的功能?

  • 我将使用MailgunAPI。 以下是在终端中正常工作的cRUL命令。 我无法理解如何使用Postman运行此命令。 我试图导入cURL命令到邮递员,但它不导入api: key。我真的不明白如何将这个api密钥导入到Postman中以正确运行api。 请帮助我使用Postman运行此命令。 非常感谢。

  • 我正在尝试使用网站提供的Zoom.us API。他们给我cURL命令来创建一个新用户: 我翻译成Ajax: 产生新的405错误:

  • 我试图让下面的命令行使用请求库在Python中工作: curl在Anaconda Prompt中从包含test_GetCapabilities.xml文件的目录中执行时立即返回所需的响应。但是当我运行下面的Python脚本时,发布请求不起作用。 上述代码在大约一分钟后超时,并给出以下堆栈: Runfile('C:/Python/SOAP_curl.py', wdir='C:/Python')Tra