2

需要一些帮助来理解普遍存在的 cURL 58 错误,在这种情况下,这是由于包含带有 cURL 请求的 PEM 文件。

 Error 58: unable to set private key file

我的代码可以成功打开 .pem 文件(请参阅 fopen() 调用),但 cURL 抱怨它无法设置私钥文件。试图更好地了解这是客户端(我)上的东西还是从主机返回的东西。很确定它在我的尽头,但不确定是什么。

谢谢

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->apiURL);
$fh = fopen($this->certPath,'a+');

if($fh){
         echo "File opened!";
         fclose($fh);
       } else {
         echo "File not opened";
}

    curl_setopt($ch, CURLOPT_SSLCERT, $this->certPath);
    curl_setopt($ch, CURLOPT_POSTFIELDS, trim($SOAPrequest));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($ch);
    if (curl_error($ch)) {
        printf("Error %s: %s", curl_errno($ch), curl_error($ch));
    }
    curl_close ($ch);

    return $result;
}

钥匙:

-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
[...]
-----END CERTIFICATE-----
4

1 回答 1

2

您的文件不包含任何私钥,只有公钥。
我认为您可能根本没有理由使用 CURLOPT_SSLCERT。

于 2013-04-17T12:07:03.923 回答