HTTPS 和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA 正常

2022-08-30 06:21:39

我正在使用XAMPP进行开发。最近,我将xampp的安装从旧版本升级到1.7.3。

现在,当我卷曲启用了HTTPS的网站时,我得到以下异常

致命错误:未捕获的异常“RequestCore_Exception”,并显示消息“cURL 资源:资源 ID #55;cURL 错误:SSL 证书问题,验证 CA 证书是否正常。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 (60)'

每个人都建议使用PHP代码中的一些特定的curl选项来解决这个问题。我认为这不应该是方式。因为我的旧版本的XAMPP没有任何问题,只有在安装新版本后才会发生。

我需要帮助来确定我的PHP安装中哪些设置更改,Apache等可以解决此问题。


答案 1

这在Windows中是一个非常普遍的问题。您只需设置为 .cacert.pemcurl.cainfo

从 PHP 5.3.7 开始,您可以执行以下操作:

  1. 下载 https://curl.se/ca/cacert.pem 并将其保存在某个地方。
  2. update -- add curl.cainfo = “PATH_TO/cacert.pem”php.ini

否则,您需要对每个 cURL 资源执行以下操作:

curl_setopt ($ch, CURLOPT_CAINFO, "PATH_TO/cacert.pem");

答案 2

curl用于包含已接受的证书颁发机构 (CA) 的列表,但自 7.18.1 及更高版本起不再捆绑任何 CA 证书。因此,默认情况下,它将拒绝所有 TLS/SSL 证书,因为无法验证。

您必须获取 CA 的根证书,并指向它。有关curl的TLS / SSL证书验证的详细信息,请参阅curl的详细信息。


推荐