使用cURL和PHP发送客户端证书
我正在尝试向需要身份验证的URL发送一个cURL请求。但是,我在发送客户端证书时遇到问题 返回的错误为使用cURL和PHP发送客户端证书,php,curl,ssl,ssl-certificate,client-certificates,Php,Curl,Ssl,Ssl Certificate,Client Certificates,我正在尝试向需要身份验证的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 = rea
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返回完全正确的路径。已设置所有人都可以访问该文件夹。如果有影响,请立即在EasyHP中运行)
或者我只是把这些证书文件弄错了。不幸的是,我对pem文件的了解充其量是有限的
我可以使用以下PEM文件:
- 公钥
- 私钥
- 根约
- 中间钙
任何帮助或建议都将不胜感激。如果您运行
var\u dump(file\u exists($keyFile)),您会得到什么代码>布尔(真)。另外,只要回显$keyFile,就可以返回文件的正确完整路径,并且该文件绝对可以访问,这可以通过is_readable()证明;