CURL访问 https CA证书问题

1 篇文章 0 订阅

CURL访问 https CA证书问题

1、证书错误

运行报错:SSL peer certificate or SSH remote key was not OK
谷歌翻译:SSL对等证书或SSH远程密钥不正确

方法一:不检查证书

// 不检查证书
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);

方法二:下载一个证书并设置证书所在路径

(1)到 curl 官网下载证书
(2)在你的程序中设置证书的路径

// SSL CA证书
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); // 验证服务器证书有效性
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); // 检验证书中的主机名和你访问的主机名是否一致
curl_easy_setopt(curl, CURLOPT_CAPATH, “./lib/”); // 设置证书路径
//curl_easy_setopt(curl, CURLOPT_CAINFO, “./lib/cacert.pem”); // 具体的 CA 证书,和上一行效果一样,选用一个即可

2、证书路径错误

运行报错:Problem with the SSL CA cert (path? access rights?)
谷歌翻译:SSL CA证书有问题(路径?访问权限?)
分析:CA 证书默认路径 /etc/ssl/certs 找不到正确的证书
解决:

// SSL CA证书
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); // 开启验证证书功能
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); // 检验证书中的主机名和你访问的主机名是否一致
curl_easy_setopt(curl, CURLOPT_CAPATH, “./lib/”); // 设置证书路径
//curl_easy_setopt(curl, CURLOPT_CAINFO, “./lib/cacert.pem”); // 具体的 CA 证书

(1)使用 PATH 或 INFO 设置路径前要用curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);开启验证证书功能
(2)使用curl_easy_setopt(curl, CURLOPT_CAPATH, “./lib/”);设置证书路径
或使用curl_easy_setopt(curl, CURLOPT_CAINFO, “./lib/cacert.pem”);设置具体的 CA 证书

注:如果将可执行程序移植了,记得证书也要拷贝过去,放在上面 PATH 或 INFO设置的路径下

【 下面是我个人遇到的问题,不一定适合你,如果上面操作解决不了问题,可以尝试下面操作 】
(1)使用 curl_easy_setopt(curl, CURLOPT_CAPATH, capath); 设置路径,依然报路径错误
使用 curl_easy_setopt(curl, CURLOPT_CAINFO, “/home/cacert.pem”); 设置具体的证书,问题解决

(2)在(1)中使用 INFO 设置具体证书,使用相对路径"./lib/cacert.pem"依然报错,改用绝对路径"/home/cacert.pem"(记得把证书拷贝至对应路径)后 问题解决

参考:
1、https://curl.haxx.se/docs/sslcerts.html
2、https://curl.haxx.se/docs/caextract.html
3、

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值