php - curl 错误 (58) : unable to set private key file: '/var/www/work/xml/keys/client.pem' type PEM

标签 php ssl curl openssl libcurl

我在使用私钥和公钥连接到服务器时遇到此错误。

cURL 错误 (58):无法设置私钥文件:'/var/www/work/xml/keys/client.pem' type PEM

我的私钥包含 key 和证书。它也有密码。

我当前的代码在这里:

    $url="https://example.website.com";

    $pemfile = "/var/www/work/xml/keys/server.pem";
    $keyfile = "/var/www/work/xml/keys/client.pem";

    $requestXml = file_get_contents("net.xml");

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HTTP_VERSION, 1.1); 
    curl_setopt($ch, CURLOPT_PORT, 443); 
    curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);

    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 

    curl_setopt($ch, CURLOPT_FAILONERROR, 0); 

    curl_setopt($ch, CURLOPT_SSLCERT, $pemfile); 
    curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM'); 
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'PASSWORD'); 


    curl_setopt($ch, CURLOPT_SSLKEY, $keyfile); 
    curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "PASSWORD");


    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXml);

    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);

    if ($curl_errno > 0) 
    {
        echo "cURL Error ($curl_errno): $curl_error\n";
    }
    else 
    {
        header("Content-Type: text/xml");
        print_r($data);
    }

    curl_close($ch);

最佳答案

您的脚本似乎无法正确访问 $keyfile 文件。您可能需要仔细检查您的脚本(或进程)是否具有正确的权限,或者修改文件权限。

关于php - curl 错误 (58) : unable to set private key file: '/var/www/work/xml/keys/client.pem' type PEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710865/

相关文章:

php - 将第 n 种颜色添加到 php 循环

php - 有代码,但这是什么错误?

java - 尝试通过 https 和基本身份验证获取 http 响应 - 获取 "Unauthorized"

php - PHP 或 Python、perl 中的 cURL 脚本

bash - 如何通过Bash中的curl从谷歌驱动器下载大文件?

php - 在本地主机上使用Apache的Docker php:ERR_SSL_PROTOCOL_ERROR

php - 如何在 ubuntu nginx 服务器上安装最新的 phpmyadmin

ssl - 从服务器发送的数据是否也使用 HTTPS/SSL 加密?

c# - WCF:使用没有 SSL 证书的自定义 UserNamePasswordValidationMode

php - Swift - 将字典发送到服务器时格式错误的数据