Windows下Git Bash执行curl命令遇SSL证书错误求助
问题描述
在Windows系统的Git Bash中执行以下curl命令:
curl -X GET "https://emp-pp-sr.retina.myorg.net/subjects/topic.internal.any.v1-value/versions/latest" --cert C:/Users/NGO109/Documents/decodedca.pem --key C:/Users/NGO109/Documents/decodedkey.pem | jq
执行后出现SSL证书错误:
curl: (60) SSL certificate problem: unable to get local issuer certificate
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
解决方法
指定完整CA证书链
curl无法验证服务器证书的核心原因是缺少完整的CA证书链(包含根CA及中间CA证书),操作步骤:
- 确认你的
decodedca.pem是否包含服务器证书的所有上级颁发机构证书,若仅为客户端证书,需单独获取目标服务器的CA证书链文件 - 在curl命令中添加
--cacert参数指定完整CA链文件:
curl -X GET "https://emp-pp-sr.retina.myorg.net/subjects/topic.internal.any.v1-value/versions/latest" --cert C:/Users/NGO109/Documents/decodedca.pem --key C:/Users/NGO109/Documents/decodedkey.pem --cacert C:/Users/NGO109/Documents/full_ca_chain.pem | jq
临时跳过证书验证(仅测试环境)
若为测试场景,可临时关闭证书验证,生产环境严禁使用:
curl -X GET "https://emp-pp-sr.retina.myorg.net/subjects/topic.internal.any.v1-value/versions/latest" --cert C:/Users/NGO109/Documents/decodedca.pem --key C:/Users/NGO109/Documents/decodedkey.pem -k | jq
-k参数会让curl跳过服务器证书合法性检查。
配置Git Bash全局CA证书
将CA证书链添加到Git Bash默认CA存储,一劳永逸解决同类问题:
- 找到Git Bash的CA证书文件,通常路径为
C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt - 用文本编辑器打开该文件,将你的CA证书内容追加至文件末尾
- 保存后重启Git Bash,再执行原命令即可
内容的提问来源于stack exchange,提问作者Niranjan
相关产品推荐
相关产品推荐

