PHP - 使用 cURL 访问受 HTTPS (SSL) 保护的站点

Ren*_*Ren 2 php ssl https curl

以下代码返回退出代码 58。

来自 cURL 文档:本地客户端证书的 CURLE_SSL_CERTPROBLEM (58) 问题。

// create a new CURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . $CERT);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD,"XXXXX");

curl_setopt($ch, CURLOPT_SSLVERSION, 3);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content Type: text/xml',
    'User-Agent: XXXXX',
    'User-Name: XXXXX'
));

$RESPONSE = curl_exec($ch);  

var_dump($RESPONSE);

// close CURL resource, and free up system resources
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

有什么我想念的吗?

Kai*_*aja 5

确保文件getcwd() . $CERT存在并且是有效的 PEM 证书。如果看起来没问题,请设置以下选项以将更多 SSL 认证详细信息输出到 STDERR:

curl_setopt($ch, CURLOPT_CERTINFO, true);
Run Code Online (Sandbox Code Playgroud)

请注意,此设置仅在已CURLOPT_VERBOSE设置为 true时才有效。