libcurl error, code :60, reason:SSL certificate problem: unable to get local issuer certificate
时间: 2024-10-16 17:01:57 浏览: 43
当使用libcurl进行HTTPS通信时,遇到错误码60并且提示"SSL certificate problem: unable to get local issuer certificate",这通常表示libcurl无法验证服务器的SSL/TLS证书。具体来说,这意味着它找不到本地的信任证书链(即根CA证书),用来确认服务器的身份。
原因可能有以下几点:
1. **缺失或过期的证书:** 你的libcurl库没有包含信任的根证书,或者已有的证书文件已经过期。
2. **证书路径问题:** libcurl可能没有正确设置查找证书的位置,比如Windows系统中的证书存储位置。
3. **自签名证书:** 如果服务器使用的是自签名证书而非标准颁发机构签发的,libcurl可能不知道如何验证。
4. **防火墙或代理设置:** 阻止了libcurl访问互联网获取证书信息。
解决这个问题的方法包括:
1. **添加根证书:** 将缺失的根CA证书安装到libcurl的证书信任库中。这可能涉及下载证书、将其转换为PEM格式,然后配置libcurl。
- 对于Windows,你可以考虑在系统的证书管理控制台中添加证书。
- 对于Linux/Unix,可以在`~/.peercert`或`/etc/ssl/certs`等目录下添加证书,或者在`curl.cainfo`环境变量中指定路径。
2. **检查libcurl设置:** 确保`cacert`(SSL CA certificates)选项设置正确,可以通过`CURLOPT_CAINFO`或`--cacert`参数指定证书文件路径。
3. **更新证书:** 如果证书已经过期,你需要从证书颁发机构下载新的证书。
4. **检查网络连接:** 检查是否有防火墙或安全软件阻止了libcurl的连接请求。
如果尝试以上解决方案后仍然存在问题,请确保服务器提供了一个有效的、可信任的SSL证书。如果服务器证书没问题,可能是libcurl库版本过旧,尝试升级到最新版。
阅读全文