You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REST服务证书校验报x509: certificate signed by unknown authority错误

报错根因

x509: certificate signed by unknown authority 触发的核心原因是:你自行生成的自签名证书,不在操作系统/客户端程序的受信任根证书列表中,TLS校验环节无法找到可信的证书签发主体,直接终止连接。
另外有90%的本地自签名证书场景还会踩第二个坑:新版TLS客户端(Chrome 58+、Go 1.15+、Python 3.7+等)已经不再信任仅设置了Common Name字段的证书,必须携带Subject Alternative Name(SAN)扩展才能通过校验,很多旧教程生成证书的步骤漏掉了这个配置,哪怕加了系统信任也会报错。

完整解决步骤

1. 生成符合规范的localhost自签名证书

先在当前目录创建openssl配置文件localhost.cnf,内容如下:

[req]
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = LocalDev
L = LocalDev
O = LocalDev
CN = localhost
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
IP.2 = ::1

执行以下命令生成有效期10年的证书和无加密私钥:

openssl req -x509 -newkey rsa:2048 -nodes -keyout localhost.key -days 3650 -out localhost.crt -config localhost.cnf

执行完成后当前目录会生成localhost.key(私钥,给服务端配置用)和localhost.crt(证书文件,用于信任配置)。

2. 将证书加入Ubuntu系统级信任

执行以下命令把证书导入系统受信任根证书库:

sudo cp localhost.crt /usr/local/share/ca-certificates/localhost.crt
sudo update-ca-certificates

命令执行成功后终端会输出1 added, 0 removed; done.的提示,代表系统级信任配置完成。

3. 适配不读取系统证书库的特殊环境

部分程序会维护独立的证书存储,需要单独配置信任:

  • Go编写的服务/客户端:默认读取系统证书库,配置完系统信任后重启程序即可生效;如果代码里自定义了证书池,需要通过x509.CertPool.AppendCertsFromPEM()方法手动加载localhost.crt。
  • Python 生态(requests、pip等):可以在请求时传入verify="/path/to/localhost.crt"参数跳过校验报错,也可以将localhost.crt的内容追加到certifi包对应的cacert.pem文件中实现全局信任。
  • 桌面浏览器:Chrome、Edge、Firefox均使用独立证书库,需要打开浏览器设置-隐私和安全-证书管理页面,将localhost.crt导入到「受信任的根证书颁发机构」分组,重启浏览器后生效。
  • Docker容器:需要在构建镜像时把localhost.crt拷贝到容器内的/usr/local/share/ca-certificates/目录,执行update-ca-certificates更新容器内证书库即可。
常见避坑提示
  • 生成私钥时务必加-nodes参数,否则私钥会被密码加密,服务启动时会卡在密码输入环节无法自动运行。
  • 配置完系统信任后记得重启对应的服务/客户端/终端,旧进程不会加载更新后的证书库。
  • 自签名证书仅适合本地开发调试使用,绝对不要用于生产对外服务场景。
  • 如果用curl测试仍然报错,可以加-v参数查看具体校验环节,确认是证书信任问题还是SAN字段缺失问题。

内容的提问来源于stack exchange,提问作者Prajwal Bhagat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 02:57:25