【发布时间】:2019-07-04 20:06:49
【问题描述】:
我在使用来自 GoDaddy 的新 SSL 证书时遇到问题,这是我的代码:
<?php
$url = "https://myurl.com";
$ch = curl_init($url);
$certificate_location = "ca-bundle.crt"; // modify this line accordingly (may need to be absolute)
curl_setopt($ch, CURLOPT_CAINFO, $certificate_location);
curl_setopt($ch, CURLOPT_CAPATH, $certificate_location);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_FORBID_REUSE, TRUE);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
$result = curl_exec($ch);
$errtext = curl_error($ch);
$errnum = curl_errno($ch);
var_dump($result);
var_dump($errtext);
var_dump($errnum);
这导致error 60 即SSL certificate problem: unable to get local issuer certificate
我尝试获取latest CA certificates extracted from Mozilla 并指向 cURL 以使用它,但没有任何效果。有什么想法吗?
【问题讨论】:
-
没有给出重现错误的 URL,因此很难提供帮助。如果您收到 google.com 等域的错误,那么您的
ca-bundle.crt可能有问题。如果您仅针对特定域收到此错误,则可能是域配置错误,通常缺少链证书。 -
@SteffenUllrich 我无法共享原始 URL,但是当我尝试另一个 URL(也使用 godaddy ssl 证书)时,我收到另一个错误:OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to dan.co.il:443
-
确保
CURLOPT_CAINFO和CURLOPT_CAPATH是绝对路径而不是相对路径。 -
@odan 我确实使用了绝对路径,没有帮助。