基于 openEuler 24.03 (LTS-SP1):彻底解决 containerd 拉取私有仓库镜像时的 x509 自签证书报错问题

目录

基于 openEuler 24.03 (LTS-SP1):彻底解决 containerd 拉取私有仓库镜像时的 x509 自签证书报错问题

摘要

❗️问题背景

✅ 解决方案(官方推荐根证书信任法)

步骤一:准备自签 CA 文件

步骤二:复制证书至系统信任目录

步骤三:刷新系统信任根证书

步骤四:重启 containerd 服务

步骤五:验证拉取是否成功

故障排查建议

参考配置(非必须)

✅ 总结


基于 openEuler 24.03 (LTS-SP1):彻底解决 containerd 拉取私有仓库镜像时的 x509 自签证书报错问题

摘要

在 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//hosts.toml,也仍可能无效。


✅ 解决方案(官方推荐根证书信任法)

步骤一:准备自签 CA 文件

假设你的私有仓库地址为:

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

步骤四:重启 containerd 服务

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 脚本),我可以继续协助生成。

你可能感兴趣的:(各种问题,ansible,ssl,x509)