Curl错误:无法设置私钥文件:'test.pem'类型PEM [英] Curl Error: unable to set private key file: 'test.pem' type PEM

查看:339
本文介绍了Curl错误:无法设置私钥文件:'test.pem'类型PEM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Pem文件是这种格式。

My Pem file is in this format.

Bag Attributes
localKeyID:
friendlyName: test
subject=/C=GB/ST=London/L=Soho/O=Rightmove/OU=RTDF/CN=cmexpertise
issuer=/C=GB/ST=London/L=Soho/O=Rightmove/OU=Operations/CN=RTDF Test Issuing CA v3/emailAddress=operations@rightmove.co.uk
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

Bag Attributes
localKeyID:
friendlyName: test
subject=/C=GB/ST=London/L=Soho/O=Rightmove/OU=RTDF/CN=cmexpertise
issuer=/C=GB/ST=London/L=Soho/O=Rightmove/OU=Operations/CN=RTDF Test Issuing CA v3/emailAddress=operations@rightmove.co.uk
-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

Bag Attributes
localKeyID:
friendlyName: test
subject=/C=GB/ST=London/L=Soho/O=Rightmove/OU=RTDF/CN=cmexpertise
issuer=/C=GB/ST=London/L=Soho/O=Rightmove/OU=Operations/CN=RTDF Test Issuing CA v3/emailAddress=operations@rightmove.co.uk
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,B9E036426B7AEDA6
-----END RSA PRIVATE KEY-----

我正在使用此PHP代码。我收到此错误。

I'm using this code of PHP. I'm getting this error.


卷曲错误:无法设置私钥文件:'test.pem'类型PEM

Curl Error: unable to set private key file: 'test.pem' type PEM

代码。

   $json_data  // it's a json array.

    $url = "https://adfapi.adftest.rightmove.com/v1/property/sendpropertydetails";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);

    // $pemFile = tmpfile();
    // fwrite($pemFile, "test.pem");   //the path for the pem file
    // $tempPemPath = stream_get_meta_data($pemFile);
    // $tempPemPath = $tempPemPath['uri'];

    curl_setopt($ch, CURLOPT_SSLCERT, "test.pem"); 
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,"PEM");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/javascript'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
    curl_setopt($ch, CURLOPT_POST, True);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
    curl_setopt($ch, CURLOPT_VERBOSE, true);

    $result = curl_exec($ch);

    if(!$result)
    {
        echo "Curl Error: " . curl_error($ch);
    }
    else
    {
        echo "Success: ". $result;
    }

    $info = curl_getinfo($ch);

    curl_close($ch); // close cURL handler

    if (empty($info['http_code'])) {
            die("No HTTP code was returned"); 
    } else {
        // load the HTTP codes
        $http_codes = parse_ini_file("path/to/the/ini/file/I/pasted/above");

        // echo results
        echo "The server responded: <br />";
        echo $info['http_code'] . " " . $http_codes[$info['http_code']];
    }

我在线检查证书解码器:
https://www.sslshopper.com/certificate-decoder.html
并且证书在这个网站。

I check online for certificate decoder : https://www.sslshopper.com/certificate-decoder.html and certificate is valid on this site.

那么这里的问题是我无法解决。
我也尝试过ssl命令。

So what is the problem here i can't figure it out. I tried with ssl command also.

推荐答案

有两个错误。


  • 一个错误是pem文件,而pem文件生成错误。

  • 另一个错误是我不包含CURLOPT_SSLCERTPASSWD()

代码,

    curl_setopt($ch,CURLOPT_SSLCERTTYPE,"PEM");
    curl_setopt($ch, CURLOPT_SSLCERT, "test.pem");  
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '******'); // password

这篇关于Curl错误:无法设置私钥文件:'test.pem'类型PEM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆