HCRM博客

curl命令SSL错误排查与解决指南

常见错误及原因分析

1、SSL certificate problem: unable to get local issuer certificate:这是最常见的问题之一,通常是因为本地的证书存储库中没有包含服务器证书的颁发机构(CA)的根证书或中间证书,导致curl 无法验证服务器证书的合法性。

2、self signed certificate:自签名证书是由个人或组织自行签发的证书,不是由受信任的 CA 机构颁发的,当curl 遇到自签名证书时,会因为不信任该证书而报错。

curl命令SSL错误排查与解决指南-图1
(图片来源网络,侵权删除)

3、SSL certificate problem: certificate verify failed:可能是证书本身存在问题,如证书已过期、证书链不完整、证书被篡改等,导致curl 无法验证证书的有效性。

解决方法

1、更新证书存储库:在大多数 Linux 发行版上,可以使用系统自带的包管理工具来更新证书存储库,在 Ubuntu 上使用sudo aptget update && sudo aptget install onlyupgrade cacertificates;在 CentOS 上使用sudo yum update cacertificates

2、指定信任的证书存储库:如果知道服务器的 SSL 证书是由特定的证书颁发机构签发的,可以指定该证书颁发机构的根证书存储库,以便curl 能够验证服务器证书,如果服务器的证书是由 Let’s Encrypt 签发的,可以使用以下命令:curl cacert /path/to/letsencryptca.pem httPS://example.com

3、跳过证书验证:如果只是测试或者调试,并不关心 SSL 证书的验证,可以使用kinsecure 选项来告诉curl 忽略 SSL 证书验证,但请注意,这样做会降低安全性,因为连接将不再受到 SSL 证书的保护。

4、添加自签名证书到信任列表:如果是自签名证书的问题,可以将自签名证书添加到本地的信任列表中,具体步骤如下:

将自签名证书复制到系统默认的证书存储路径下,如在 Ubuntu 上是/usr/local/share/cacertificates/,在 CentOS 上是/etc/pki/catrust/source/anchors/

curl命令SSL错误排查与解决指南-图2
(图片来源网络,侵权删除)

运行相应的命令来更新证书信任列表,如在 Ubuntu 上运行sudo updatecacertificates,在 CentOS 上运行sudo updatecatrust extract

FAQs

1、为什么更新了证书存储库后仍然出现 SSL 证书问题?

可能是因为系统缓存了旧的证书信息,导致更新后的证书没有及时生效,可以尝试清除相关的缓存文件或重启系统后再试。

2、使用k 选项跳过证书验证是否安全?

不安全,跳过证书验证会使你的连接容易受到中间人攻击,因为无法确保你正在连接的服务器就是你期望的服务器,也无法保证数据传输的安全性和完整性,只有在完全信任目标服务器且处于安全的测试环境中时,才建议临时使用此选项进行测试。

curl命令SSL错误排查与解决指南-图3
(图片来源网络,侵权删除)

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/gz/23549.html

分享:
扫描分享到社交APP
上一篇
下一篇