【问题标题】:Error while curling a https website using self signed certificate使用自签名证书卷曲 https 网站时出错
【发布时间】:2025-12-03 08:25:02
【问题描述】:

我正在尝试 curl 使用自签名证书的工具的 rest api。 curl -D- -u user:pass -X GET -H "Content-Type: application/json" https://server:8006/api2/json/nodes 它给出了以下错误:

"curl: (60) SSL 证书问题:无法获取本地颁发者证书"

使用不安全选项时,会收到以下输出:

HTTP/1.1 401 没有票 缓存控制:max-age=0 连接:关闭 日期:2016 年 8 月 22 日星期一 15:25:18 GMT Pragma:无缓存 服务器:pve-api-daemon/3.0 过期时间:2016 年 8 月 22 日星期一 15:25:18 GMT

我尝试使用以下方法生成服务器证书:

 echo "" | openssl s_client -connect server:8006 -prexit 2>/dev/null | sed -n -e '/BEGIN\ CERTIFICATE/,/END\ CERTIFICATE/ p' > cacert.pem

但是,当使用 --cacert 选项使用此证书时,它仍然给出“curl:(60)SSL 证书问题:无法获取本地颁发者证书”错误消息。

请让我知道我错过了什么?

【问题讨论】:

  • server:8006/api2/json/nodes是你自己的api吗?我不确定您想在这里做什么:只需从其他人的不安全 api 获得响应或做一些事情来保护您自己的 api :D

标签: ssl curl https


【解决方案1】:

自签名证书在设计上是不受信任的,您无法获得可信任的自签名证书。

如果您希望证书受到信任,您需要从受信任的证书颁发机构购买/请求证书。

【讨论】:

  • 这没有抓住重点——你应该能够使用自签名证书,通过验证证书或其自定义信任根的某些东西。这基本上就是问题陈述中使用的--cacert 选项的用途。