无法使用cURL设置私钥文件

问题描述 投票:0回答:2

我想使用 PHP cURL 连接到安全站点。网站所有者给了我们四个文件:

  1. 站点名称.key
  2. 站点名称.p12
  3. 站点名称.pem
  4. icom-live-ca.pem

以及 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 站点?

php curl
2个回答
3
投票

您应该检查文件及其所在目录的文件权限,以确保您的程序可以正确读取它们。如果这不起作用,请检查 .pem 文件以确保证书后面跟着其颁发者的证书。

请参阅此问题和答案以获取更多信息:无法使用 libcurl 访问需要客户端身份验证的站点


0
投票

注意这是一条令人困惑的消息

Unable to set private key file:'filepath'/secure.key type PEM

我的问题实际上与私钥文件无关(尽管消息中打印了路径)。 这是证书文件不正确,需要包含完整的证书链,以便最终包括作为密钥的证书。

© www.soinside.com 2019 - 2024. All rights reserved.