在开发板上如何处理curl: (60) SSL certificate problem

目录

引言

问题解析

解决方法

跳过证书验证

采用证书认证

结语


引言

最近一直推荐学生们在课程实验中使用curl及其libcurl。curl 是一个强大的命令行工具,用于在命令行中进行数据传输。它支持多种协议,如 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等。在网络开发、系统管理和数据抓取等领域被广泛应用。例如,通过 curl 命令可以方便地向服务器发送 GET、POST 等请求,获取网页内容、上传文件等。

libcurl 则是与之紧密相关的一个重要库。它为开发者提供了在程序中实现网络传输功能的强大能力,广泛应用于各种编程语言和项目中。

但是在x210开发板上使用curl访问https网站时遇到下面的问题:

复制代码
​curl: (60) SSL certificate problem: unable to get local issuer certificate

More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
​

今天就分享一下如何解决这个问题。

问题解析

在嵌入式开发板上运行curl时出现SSL certificate problem: unable to get local issuer certificate错误,这意味着curl无法验证服务器证书的合法性,因为它找不到用于验证服务器证书的颁发者证书。在官方文档curl - SSL CA Certificates中详细解释了出现问题的原因和几种解决方法。

解决方法

跳过证书验证

在命令行使用-k--insecure选项告诉curl不要验证对等方。但在生产环境中,跳过验证会带来安全风险,因为这会使连接容易受到中间人攻击,所以仅适用于实验或开发阶段。

如果是在程序中,可以加入如下的语句禁用本地证书校验:

cpp 复制代码
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);

采用证书认证

跳过证书验证虽然可以简单地解决问题,但是它有安全隐患。比较好的方法是获得CA证书。下面以Windows 11自带的浏览器为例介绍一下相关步骤:

在浏览器的地址栏可以找到一个锁的标志。

点击锁的标志会显示网站的安全信息:

点击"连接安全",显示网站的安全信息,在这个小窗口的右上角可以看到一个证书的图标。

点击证书图标后进入证书查看器。

在证书查看器中切换到详细信息。

点击下方的导出按钮,可以将证书保存为crt格式。

在主机的Linux上用下面的命令将crt格式转换为pem格式:

bash 复制代码
openssl  x509  -in  baidu_com.crt  -out  baidu_com.pem

然后将pem格式拷贝到开发板上。

然后使用下面的命令测试证书:

bash 复制代码
./curl -v --cacert baidu_com.pem https://www.baidu.com

如果遇到如下错误信息:curl和curl: (60) SSL certificate problem: certificate is not yet valid,说明开发板的时间不对,可以在开发板上用如下命令设置时间:

bash 复制代码
date -s "2025-04-29 14:30:00"

再执行上面的语句就应该可以正常访问https网站了。

结语

希望以上内容能帮助你更好地理解和解决 curl 相关的问题。如果你还有其他疑问,欢迎继续探索和交流。

相关推荐
z10_1418 分钟前
什么是静态住宅ip,跨境电商为什么要用静态住宅ip
网络·网络协议·tcp/ip
wanhengidc23 分钟前
企业为什么选择浙江电信服务器租用?
运维·服务器
yangshuo128138 分钟前
家用服务器 Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南
运维·服务器·ubuntu
imhikaru1 小时前
Linux Shell 重定向与管道符号(>, >>, |)的实现机制
linux·服务器·网络
黑不溜秋的2 小时前
驱动开发系列54 - Linux Graphics QXL显卡驱动代码分析(一)设备初始化
linux·服务器·qemu·qxl·虚拟显卡
独行soc2 小时前
2025年渗透测试面试题总结-拷打题库35(题目+回答)
linux·运维·服务器·python·网络安全·面试·职场和发展
从后端到QT4 小时前
WebRTC 服务器之Janus架构分析
服务器·架构·webrtc·janus
一道秘制的小菜4 小时前
AimRT从入门到精通 - 04RPC客户端和服务器
linux·运维·服务器·c++·aimrt
Yan-英杰4 小时前
npm error code CERT_HAS_EXPIRED
服务器·前端·数据库·人工智能·mysql·npm·node.js