在Curl中获取错误 - 无法使用已知的CA证书对对等证书进行身份验证

时间:2013-02-04 08:25:50

标签: ssl curl openssl

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

CA签名证书可以正常使用。 我使用curl_easy_setopt()来设置以下内容。

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

卷曲版本
的libcurl-7.19.7-26

Openssl版本为0_9_8u。

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

6 个答案:

答案 0 :(得分:7)

用于php关闭curl验证证书,例如对于curl_exec

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

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

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

答案 1 :(得分:6)

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

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

curl --noproxy -k \* -D - https://127.0.0.1:443/some-secure-endpoint

答案 2 :(得分:3)

我们通过将curl更新为标准存储库中提供的最新版本并安装最新的ca-certificates包来修复CentOS 6上的类似问题:

yum update curl
yum install ca-certificates

答案 3 :(得分:2)

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

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

直到7.18.0,curl捆绑了一个严重过时的ca包文件 默认安装。这些天,卷曲档案包括没有ca证书 所有。你需要把它们带到其他地方。例如,见下文。

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

答案 4 :(得分:1)

虽然在使用git clone而不是使用curl的情况下发生了此错误,但我最近偶然发现了相同的错误消息:

  

无法使用已知的CA证书验证对等证书

Arth's findings类似,适用于CentOS 6 的内容(为了成功使用带有git clone的HTTPS URL用于相关的GitLab存储库)涉及更新受信任的证书服务器(即使用HTTPS的服务器),使用the following steps

  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
  5. 对于CentOS上的用户,未来可能会对curl (或其他类似方案)的情况应用相同的证书步骤。

答案 5 :(得分:0)

在' C'

curl_easy_setopt(curl_handle,CURLOPT_SSL_VERIFYPEER,0);

为我工作