docker pull 共有镜像 x509 certificate signed by unknown authority

本文介绍了一种更新Docker客户端信任的证书颁发机构的方法。通过使用echo、openssl、sed等工具,将新的证书追加到系统的ca-certificates.crt文件中,并重新加载及重启Docker服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

echo -n | openssl s_client -showcerts -connect registry-1.docker.io:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt

systemctl daemon-reload

systemctl restart docker

### 解决 Docker 中 `x509: certificate signed by unknown authority` 错误 当遇到此错误时,通常是因为客户端无法验证服务器提供的 SSL/TLS 证书的有效性。这可能是由于使用了自签名证书或其他未被信任的 CA 签发的证书。 #### 方法一:将自签名证书添加到受信列表中 对于 Linux 和 macOS 用户来说,可以按照如下方式操作: 1. 获取 Harbor 的 CA 证书文件(通常是 .crt 或.pem 文件) 2. 将该证书复制至系统的可信证书存储路径下 3. 更新本地的信任库以便操作系统识别新加入的根证书 针对不同发行版的具体命令可能有所差异,在 Debian/Ubuntu 上可执行以下指令[^1]: ```bash sudo cp ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates ``` 而对于 RedHat/CentOS 则应采用这种方式: ```bash sudo cp ca.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust extract ``` 完成上述步骤之后重启 Docker 服务使更改生效。 #### 方法二:修改 Docker 客户端配置忽略 HTTPS 验证 (不推荐) 虽然可以通过设置环境变量来绕过 SSL 检查,但这会带来安全隐患因此并不建议这样做除非是在测试环境中[^2]。 如果确实需要临时关闭 SSL 校验,则可以在运行容器之前先设定 DOCKER_TLS_VERIFY=0 并指定 HTTP 协议访问私有仓库地址。 ```bash export DOCKER_HOST=tcp://core.harbor1.domain:443 export DOCKER_TLS_VERIFY=0 docker pull core.harbor1.domain/<image>:demon-latest ``` 请注意这种方法仅适用于开发调试阶段,并不适合生产部署场景。 #### 方法三:创建 Kubernetes Secret 来保存镜像仓库凭证 如果是 KubeSphere 或者其他基于 k8s 构建的应用程序遇到了相同的问题,那么应该考虑通过创建 secret 对象的方式处理这个问题[^3]。 创建 secrets 可以让集群内部的服务安全地获取外部资源而无需暴露敏感信息给每一个 pod 使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值