我正在尝试向需要身份验证的 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
任何帮助或建议将不胜感激。