我正在尝试向需要身份验证的网址发送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文件:
非常感谢任何帮助或建议。