症状
客户端报 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。