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

相关推荐
小鱼小鱼.oO42 分钟前
阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
服务器·nginx·阿里云
啵啵学习4 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
网硕互联的小客服5 小时前
如何利用Elastic Stack(ELK)进行安全日志分析
linux·服务器·网络·安全
Yungoal5 小时前
php & apache构建 Web 服务器
服务器·php·apache
浩浩测试一下5 小时前
Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
网络·网络协议·tcp/ip·安全·网络安全·php
冰橙子id6 小时前
linux——磁盘和文件系统管理
linux·运维·服务器
咕噜企业签名分发-淼淼6 小时前
应用app的服务器如何增加高并发
运维·服务器
Think Spatial 空间思维7 小时前
【实施指南】Android客户端HTTPS双向认证实施指南
android·网络协议·https·ssl
'tubug'7 小时前
数字证书_CA_详解
https·ssl
昔我往昔7 小时前
https和http有什么区别-http各个版本有什么区别
网络协议·http·https