当前位置: 首页 > news >正文

在开发板上如何处理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 certificateMore details here: https://curl.se/docs/sslcerts.htmlcurl 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不要验证对等方。但在生产环境中,跳过验证会带来安全风险,因为这会使连接容易受到中间人攻击,所以仅适用于实验或开发阶段。

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

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);

采用证书认证

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

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

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

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

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

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

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

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

openssl  x509  -in  baidu_com.crt  -out  baidu_com.pem

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

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

./curl -v --cacert baidu_com.pem https://www.baidu.com

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

date -s "2025-04-29 14:30:00"

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

 

结语

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

相关文章:

  • openssl_error_string() 不要依赖错误信息作为逻辑判断
  • C语言复习笔记--数据在内存中的存储
  • 【LLM】解析RAG增强检索技术:原理、实现与应用
  • 23种设计模式-行为型模式之解释器模式(Java版本)
  • 光谱共焦位移传感器的优势有哪些?
  • 洛谷题解 | CF111C Petya and Spiders
  • 算法基础学习|02归并排序——分治
  • go单向链表
  • 阿里千问Qwen3技术解析与部署指南 :混合推理架构突破性优势与对DeepSeek R1的全面超越
  • 软件测试基础知识详解
  • 【VLNs篇】01:视觉语言导航(VLN)中的LLM角色
  • 关于flex布局
  • scratch代码——游戏开发 【弹簧与反弹】
  • ArrayList的elementData.length和size
  • 双向流热固耦合的收敛
  • (leetcode) 力扣100 4.移动零(两种O(n)方法 双指针)
  • 大模型核心技术及架构解析
  • 2025.4.29_STM32_看门狗WDG
  • 一文读懂 JavaScript 中的深浅拷贝
  • C#学习——类型、变量
  • 国际锐评:菲律宾“狐假虎威”把戏害的是谁?
  • 美国通过《删除法案》:打击未经同意发布他人私密图像,包括“深度伪造”
  • 在岸、离岸人民币对美元汇率双双升破7.26关口
  • 跟着京剧电影游运河,京杭大运河沿线六城举行京剧电影展映
  • “上报集团文化助力区域高质量发展赋能平台”揭牌
  • 日本大米价格连续16周上涨,再创最高纪录