2013-04-16 87 views
2

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

Error 58: unable to set private key file 

我的代码可以成功打开.pem文件(见fopen()调用),但卷曲抱怨说,它无法设置专用密钥文件。试图更好地理解客户端上的某个东西(我)还是从主机返回的东西。很确定这是在我的最后,但不知道是什么。

感谢

$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----- 
+0

您正在使用没有私钥的客户端证书。为什么?我想你已经错过了阅读A)你想要什么和/或B)什么是客户证书是... –

回答

1

您的文件不包含任何私有密钥,只有公共密钥。
我想你可能没有理由使用CURLOPT_SSLCERT。