在开发板上如何处理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 相关的问题。如果你还有其他疑问,欢迎继续探索和交流。

相关推荐
007张三丰1 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236672 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春2 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
lizhihai_997 小时前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
zjun10017 小时前
TCP专栏-4.四次挥手
网络协议·tcp/ip
黄同学real7 小时前
解决 Visual Studio Web Deploy 远程发布报 401 未授权 (ERROR\_USER\_UNAUTHORIZED)
服务器
天天进步20158 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
Java面试题总结9 小时前
Linux-Ubantu-贴士-apt的地盘
linux·运维·服务器
●VON9 小时前
AtomGit Flutter鸿蒙客户端:数据模型
android·服务器·安全·flutter·harmonyos·鸿蒙
酉鬼女又兒9 小时前
零基础入门计算机网络:网络层核心任务、三大关键问题、两种服务类型与 TCP/IP 网际层协议体系全解析
服务器·网络·网络协议·tcp/ip·计算机网络·php·求职招聘