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

解决 Curl 自签名证书验证失败的实用指南

经过这些步骤仍然不能使用自签https, 报错的问题

curl: (60) SSL certificate problem: self signed 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.

在172.16.20.21这台客户端sudo cp harbor.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extractvi /etc/host 写入 172.16.20.20  registry-1.docker.ioopenssl verify -CAfile harbor.crt harbor.crt 验证正常curl -v --cacert harbor.crt https://172.16.20.20 验证正常重置 NSSDBsudo rm -rf /etc/pki/nssdb
sudo mkdir /etc/pki/nssdb
sudo certutil -N -d sql:/etc/pki/nssdb
sudo certutil -A -d sql:/etc/pki/nssdb -n "harbor" -t "C,," -i harbor.crtcat harbor.crt harbor.key > harbor.pemcurl --cert harbor.pem https://172.16.20.20curl https://registry-1.docker.io仍然报错 curl: (60) SSL certificate problem: self signed certificate
More 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 尝试使用 /home/anaconda3/ssl/cacert.pem 作为 CA 文件,但未能验证你的自签名证书,报错 SSL certificate problem: self signed certificate。这表明自签名证书未被信任。以下是解决方法:


问题分析

  • curl 默认使用的 CA 文件路径为 /home/anaconda3/ssl/cacert.pem,而不是系统默认的 /etc/pki/tls/certs/ca-bundle.crt
  • 自签名证书未被包含在指定的 CA 文件中,导致验证失败。

解决步骤

1. 确认 curl 使用的 CA 文件路径

运行以下命令确认 curl 的 CA 文件路径:

curl-config --ca

如果路径仍然是 /home/anaconda3/ssl/cacert.pem,则需要将你的自签名证书添加到该文件中。

2. 将自签名证书添加到 CA 文件

如果 harbor.crt 是你的自签名证书:

cat harbor.crt >> /home/anaconda3/ssl/cacert.pem
3. 验证更新是否生效

再次尝试使用 curl

curl https://registry-1.docker.io --verbose

到此步骤成功了


如果无法修改 /home/anaconda3/ssl/cacert.pem

你可以显式指定 CA 文件路径:

curl --cacert /path/to/harbor.crt https://registry-1.docker.io --verbose

4. 检查域名与证书匹配

确保证书的 CNSubject Alternative Name 包含 registry-1.docker.io。查看证书详情:

openssl x509 -in harbor.crt -text -noout

如果 CN 不匹配 registry-1.docker.io

  • 更新证书的 CN
  • 或者在 /etc/hosts 中将 172.16.20.20 映射为 registry-1.docker.io

5. 强制忽略 SSL 验证(仅供测试)

如果只是临时测试,可以使用以下命令忽略 SSL 验证:

curl -k https://registry-1.docker.io

通过以上步骤,可以有效解决 curl 中的自签名证书验证问题。如果问题仍然存在,请进一步提供以下信息:

  1. harbor.crt 的证书内容(敏感信息可打码)。
  2. /home/anaconda3/ssl/cacert.pem 是否包含自签名证书。

http://www.mrgr.cn/news/81198.html

相关文章:

  • debian linux 连网自动调整时间 (报错 Unit systemd-timesyncd.service could not be found.)
  • FastJson读取resources下的json文件并且转成对象
  • vue3封装而成的APP ,在版本更新后,页面显示空白
  • 鸿蒙学习笔记:用户登录界面
  • 代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
  • Java-10
  • 常见数据结构
  • Krita安装krita-ai-diffusion工具搭建comfyui报错没有ComfyUI_IPAdapter_plus解决办法
  • 设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
  • Python(二)str、list、tuple、dict、set
  • 直流有刷电机多环控制(PID闭环死区和积分分离)
  • leetcode 704. 二分查找
  • 【星海随笔】高级系统编辑
  • ARP协议的工作原理
  • 双足机器人《荣耀机甲H1》到手体验
  • docker下载镜像设置
  • 重温设计模式--备忘录模式
  • 谷歌开发者工具-元素篇
  • 重温设计模式--状态模式
  • ArrayList类 (顺序表)
  • Linux的VIM基本操作
  • 两台主机传送数据: transfer files between servers使用rsync命令
  • Linux网络——UDP的运用
  • UE5 移植Editor或Developer模块到Runtime(以运行时弹窗为例)
  • Dapper
  • C++设计模式:组合模式(公司架构案例)