← 中文资源

简体中文版本

Docker 守护进程: TLS 证书错误

修复 Docker 守护进程的 TLS 错误:证书过期、CA 不匹配或客户端与服务器名称不一致。

阅读英文原文

症状

客户端报 x509: certificate has expired or is not yet valid 或链校验失败。本地经 socket 使用 docker 正常,说明只有 TLS 路径出错。

诊断

检查有效期、SAN 与证书链:

openssl x509 -in daemon-cert.pem -noout -dates -ext subjectAltName
openssl verify -CAfile ca.pem daemon-cert.pem
echo "$DOCKER_TLS_VERIFY $DOCKER_CERT_PATH"

修复

续期并对齐证书:

export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=$HOME/.docker/certs
docker --tlsverify version

重新生成证书,使其 SAN 含连接所用主机名。

验证

以 --tlsverify 连接;握手成功,docker version 同时返回客户端与服务端信息,openssl verify 报告证书链 OK。