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

Podman镜像推送遇TLS证书验证错误,求合规解决及验证逻辑确认

解决Podman推送镜像时自签名证书验证失败的问题

为啥登录成功但推送失败?

Podman的login和push/pull的证书校验逻辑存在差异:登录操作仅做基础的证书有效性检查(比如域名匹配、是否过期),甚至会 fallback 到系统信任根;但推送/拉取操作会严格遵循容器运行时的校验规则,必须确保证书存在于指定目录或系统信任池内,否则就会抛出x509错误。

具体修复步骤

1. 确认证书目录结构完全合规

Podman对/etc/containers/certs.d的目录结构要求严格:

  • 子目录名必须完全匹配仓库的主机名+端口,比如仓库地址是registry.mycorp.com:5000,对应目录就得是/etc/containers/certs.d/registry.mycorp.com:5000
  • 目录内的证书必须是.crt后缀(如果你的证书是.pem格式,可通过软链转为.crt)

执行命令检查目录结构:

ls -la /etc/containers/certs.d/<你的仓库完整主机名(含端口)>

确保能看到后缀为.crt的证书文件。

2. 将证书导入Mac系统信任根(M1/M2系列专属处理)

Podman在Mac上基于虚拟机运行,但部分网络请求可能走宿主系统栈,因此需把证书添加到Mac系统信任列表:

  • 双击自签名证书文件,打开「钥匙串访问」,将证书拖入「系统」钥匙串
  • 右键证书→「显示简介」,在「信任」标签页,将“使用此证书时”设置为「始终信任」
  • 重启Podman虚拟机生效:
podman machine stop
podman machine start

3. 给Podman虚拟机的系统CA池添加证书

若上述方法无效,直接进入Podman虚拟机内部配置系统信任:

# 进入Podman虚拟机
podman machine ssh

# 创建系统CA锚点目录(若不存在)
sudo mkdir -p /etc/pki/ca-trust/source/anchors/

# 复制证书到系统CA目录
sudo cp /etc/containers/certs.d/<你的仓库主机名>/<证书文件名>.crt /etc/pki/ca-trust/source/anchors/

# 更新系统CA信任库
sudo update-ca-trust

# 退出虚拟机
exit

再次重启Podman虚拟机完成配置。

4. 先验证配置再执行推送

先尝试拉取一个测试镜像确认证书配置生效:

podman pull <你的仓库主机名>/test-image:latest

若拉取成功,再执行podman push ${IMAGE_PUSH_URL}即可正常完成推送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:25:11