目录
基于 openEuler 24.03 (LTS-SP1):彻底解决 containerd 拉取私有仓库镜像时的 x509 自签证书报错问题
摘要
❗️问题背景
✅ 解决方案(官方推荐根证书信任法)
步骤一:准备自签 CA 文件
步骤二:复制证书至系统信任目录
步骤三:刷新系统信任根证书
步骤四:重启 containerd 服务
步骤五:验证拉取是否成功
故障排查建议
参考配置(非必须)
✅ 总结
在 openEuler 24.03 (LTS-SP1) 环境下,使用 containerd 拉取配置了自签名 TLS 证书的私有镜像仓库时,常常遇到如下错误:
tls: failed to verify certificate: x509: certificate signed by unknown authority
本文将基于 openEuler 环境,提供一种根本有效且稳定的解决方案,通过信任系统 CA 方式,成功完成私有镜像的拉取操作。
部署私有 Harbor / Registry 仓库,常为了测试或内部安全使用自签名证书。但 containerd 默认不信任该证书,拉取镜像时失败。即使配置 /etc/containerd/certs.d/
,也仍可能无效。
假设你的私有仓库地址为:
10.130.135.145:30500
你已具备证书文件:
/etc/containerd/certs.d/10.130.135.145:30500/ca.crt
cp /etc/containerd/certs.d/10.130.135.145:30500/ca.crt /etc/pki/ca-trust/source/anchors/
注意:openEuler 默认信任路径使用
/etc/pki/ca-trust/source/anchors/
,不要放错。
update-ca-trust extract
systemctl restart containerd
crictl pull 10.130.135.145:30500/busybox:test
返回如下表示成功:
Image is up to date for sha256:...
如果 hosts.toml
配置无效,可能是 containerd 未启用 config_path
,或 registry 块配置被忽略。
推荐使用本文系统信任证书方式,适用于 openEuler、containerd 1.6+ 且更具兼容性。
如果仍想保留 registry 配置,建议如下写法(/etc/containerd/config.toml
):
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
在 openEuler 24.03 (LTS-SP1) 中,最直接有效的 containerd 私有仓库自签证书信任方式是将 CA 根证书添加至系统 anchor,并刷新信任。这种方式适配广泛,可靠性高,是企业私有镜像仓库部署中的推荐实践路径。
如果你需要将本文内容输出为 Markdown 文件或做进一步自动化(如写成 Ansible 脚本),我可以继续协助生成。