12

使用自签名证书进行 ssl 连接时出现以下错误。“对等证书无法使用已知 CA 证书进行身份验证”

它与 CA 签名证书一起工作正常。我正在使用 curl_easy_setopt() 设置以下内容。

curl_easy_setopt(MyContext, CURLOPT_CAPATH, CA_CERTIFICATE_PATH) curl_easy_setopt(MyContext, CURLOPT_SSL_VERIFYPEER,TRUE);

curl 版本
libcurl-7.19.7-26

Openssl 版本是 0_9_8u。

请让我知道如何解决这个问题。

4

6 回答 6

10

安全问题:此答案禁用安全功能。不要在生产中使用它!

对于 php,可以关闭 curl 对证书的验证(请参阅下面的警告),例如 curl_exec

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

http://php.net/manual/en/function.curl-setopt.php

(您自己评估安全风险,在我的情况下,它位于合作伙伴公司的服务器上,并且所需的文件不包含安全信息 - 恰好位于安全服务器上)

于 2016-01-27T13:56:57.053 回答
9

默认情况下,CURL 通常会验证 SSL 证书以查看其是否有效并由公认的 CA 颁发。为此,curl 使用一组捆绑的 CA 证书。

如果您想关闭 curl 对证书的验证,请使用 -k(或 --insecure)选项。这是一个例子:

curl --noproxy -k \* -D - https://127.0.0.1:443/some-secure-endpoint
于 2013-05-10T15:37:23.277 回答
5

我们通过将 curl 更新到标准存储库中可用的最新版本并安装最新的 ca-certificates 捆绑包,修复了 CentOS 6 上的类似问题:

yum update curl
yum install ca-certificates
于 2016-10-26T15:11:29.957 回答
4

libcurl 默认执行对等 SSL 证书验证。这是通过使用 SSL 库可以用来确保对等方的服务器证书有效的 CA 证书包来完成的。

如果您使用捆绑包中的 CA 签名的证书与 HTTPS 或 FTPS 服务器通信,您可以确定远程服务器确实是它声称的那个。

在 7.18.0 之前,curl 捆绑了默认安装的严重过时的 ca 捆绑文件。这些天来,curl 档案根本不包含 ca 证书。你需要把它们带到别处。例如,请参见下文。

有关对等 SSL 证书验证的更多信息,请访问http://curl.haxx.se/docs/sslcerts.html

于 2013-02-22T10:02:19.800 回答
2

尽管此错误发生在 usinggit clone而不是 using的情况下curl,但我最近偶然发现了一条相同的错误消息:

对等证书无法使用已知 CA 证书进行身份验证

Arth 的发现类似,适用于 CentOS 6 (为了成功将 HTTPS URL 与git clone相关 GitLab 存储库一起使用)涉及更新服务器(即使用 HTTPS 的服务器)上的受信任证书,使用以下步骤

  1. sudo yum install ca-certificates
  2. sudo update-ca-trust enable
  3. sudo cp /path/to/your_new_cert.crt /etc/pki/ca-trust/source/anchors/
  4. sudo update-ca-trust extract

将来可能在 CentOS 上的用户curl (或其他类似场景)的情况下可以应用相同的证书步骤。

于 2016-12-20T17:34:25.407 回答
2

安全问题:此答案禁用安全功能。不要在生产中使用它!

在'C'

curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0);

为我工作

于 2018-01-12T12:44:22.677 回答