从Docker Hub拉取镜像遇x509证书过期错误求解决方案
针对你遇到的两台CentOS7服务器拉取Docker Hub镜像时报错:
error pulling image configuration: download failed after attempts=6: tls: failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2024-04-18T15:21:17+02:00 is after 2021-09-30T14:01:15Z
结合你已完成的排查,提供以下额外排查和解决步骤:
更新系统根证书池
Docker依赖系统的CA证书验证远程服务器SSL证书,CentOS7默认的ca-certificates包若未更新,可能无法识别Docker Hub的最新证书。执行命令更新:yum update ca-certificates -y systemctl restart docker更新后重新尝试拉取镜像。
排查中间人/代理拦截
若服务器处于有代理或网关的环境,可能存在设备替换SSL证书且该证书已过期的情况。用curl验证访问Docker Hub时的证书信息:curl -v https://registry-1.docker.io/v2/查看输出中
* Server certificate:部分,确认证书颁发者是否为Docker官方(如DigiCert Inc)。若为第三方颁发,需检查代理设备的证书有效性,或配置Docker信任该证书。检查Docker守护进程配置
查看/etc/docker/daemon.json是否存在异常配置(如旧registry地址、证书参数):cat /etc/docker/daemon.json若存在非必要配置,备份后清空文件,重启Docker:
systemctl restart docker再尝试拉取镜像。
明确指定官方Registry地址拉取
临时直接指定Docker Hub官方registry地址拉取,避免地址解析问题:docker pull registry-1.docker.io/library/nginx:latest若仍失败,可临时使用国内镜像源测试(如
docker pull hub.docker.com/library/nginx:latest),确认是否为证书验证问题。再次确认时间同步状态
进一步验证NTP同步是否正常:timedatectl status ntpdate -q pool.ntp.org确保系统时间与网络时间完全一致、时区设置正确,避免时间偏差导致证书验证失败。
内容的提问来源于stack exchange,提问作者Pino

