1

我正在尝试向需要身份验证的 URL 发送 cURL 请求。但是我在发送客户端证书时遇到了麻烦。

返回的错误是

unable to set private key file: 'privkeyfile.pem' type PEM

脚本如下所示:

$url = "correcturltosendrequest.com";
$post_string = "string of SOAP tags";

$keyFile = realpath("privkeyfile.pem");
$caFile = realpath("cafile.pem");
$certFile = realpath("pubkeyfile.pem");
$certPass = "pasword";

$soap_do = curl_init(); 
curl_setopt($soap_do, CURLOPT_URL,            $url );   
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSLKEY, $keyFile);
curl_setopt($soap_do, CURLOPT_CAINFO, $caFile);
curl_setopt($soap_do, CURLOPT_SSLCERT, $certFile);
curl_setopt($soap_do, CURLOPT_SSLCERTPASSWD, $certPass);
curl_setopt($soap_do, CURLOPT_POST,           true ); 
curl_setopt($soap_do, CURLOPT_POSTFIELDS,    $post_string); 
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen($post_string) )); 

$result = curl_exec($soap_do);
$err = curl_error($soap_do); 

我的谷歌搜索告诉我,这要么是脚本无法访问有问题的文件(realpath 返回完整的正确路径。已将每个人都设置为对该文件夹的所有访问权限。如果有所不同,请立即在 EasyPHP 中运行)...

或者我只是对这些证书文件做错了。不幸的是,我对 pem 文件的了解充其量是有限的。

我可以使用以下 PEM 文件:

  • 公钥
  • 私钥
  • 根 CA
  • 中间 CA

任何帮助或建议将不胜感激。

4

0 回答 0