我想使用 PHP cURL 连接到安全站点。网站所有者给了我们四个文件:
以及 PEM 密码。
$curl_resource = curl_init ();
curl_setopt ( $curl_resource, CURLOPT_URL, $sHost );
curl_setopt ( $curl_resource, CURLOPT_POST, 1 );
curl_setopt ( $curl_resource, CURLOPT_POSTFIELDS, $post_string );
curl_setopt ( $curl_resource, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $curl_resource, CURLOPT_HTTPHEADER, $headerdata);
curl_setopt ( $curl_resource, CURLOPT_HEADER, true);
curl_setopt ( $curl_resource, CURLOPT_SSLCERT , HOMEDIR.'cert/icom-live-ca.pem');
curl_setopt ( $curl_resource, CURLOPT_SSLCERTPASSWD, 'PEM pass phrase');
curl_setopt ( $curl_resource, CURLOPT_SSLKEY, HOMEDIR.'cert/secure.key');
curl_setopt ( $curl_resource, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt ( $curl_resource, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt ( $curl_resource, CURLOPT_SSLCERTTYPE, 'PEM');
我收到以下错误:
无法设置私钥文件:'filepath'/secure.key 类型 PEM。
我没有在我的服务器上进行任何设置。我是否还需要在客户端服务器上安装/更改任何设置才能访问 HTTPS 站点?
您应该检查文件及其所在目录的文件权限,以确保您的程序可以正确读取它们。如果这不起作用,请检查 .pem 文件以确保证书后面跟着其颁发者的证书。
请参阅此问题和答案以获取更多信息:无法使用 libcurl 访问需要客户端身份验证的站点
注意这是一条令人困惑的消息
Unable to set private key file:'filepath'/secure.key type PEM
我的问题实际上与私钥文件无关(尽管消息中打印了路径)。 这是证书文件不正确,需要包含完整的证书链,以便最终包括作为密钥的证书。