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

use*_*697 9 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.

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

Mar*_*ano 6

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

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

curl --noproxy -k \* -D - https://127.0.0.1:443/some-secure-endpoint
Run Code Online (Sandbox Code Playgroud)


zza*_*per 6

for php关闭curl验证证书,例如curl_exec

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 不好的做法,不要禁用SSL验证! (12认同)

Art*_*rth 5

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

yum update curl
yum install ca-certificates
Run Code Online (Sandbox Code Playgroud)


小智 4

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

如果您使用捆绑包中存在的 CA 签名的证书与 HTTPS 或 FTPS 服务器进行通信,则可以确保远程服务器确实是它所声称的服务器。

在 7.18.0 之前,curl 捆绑了默认安装的严重过时的 ca 捆绑文件。如今,curl 档案根本不包含 ca 证书。您需要从其他地方获取它们。参见下面的例子。

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