我在使用自签名证书进行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。
请让我知道如何解决这个问题。
答案 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:
sudo yum install ca-certificates
sudo update-ca-trust enable
sudo cp /path/to/your_new_cert.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract
对于CentOS上的用户,未来可能会对curl
(或其他类似方案)的情况应用相同的证书步骤。
答案 5 :(得分:0)
在' C'
curl_easy_setopt(curl_handle,CURLOPT_SSL_VERIFYPEER,0);
为我工作