如何调整Docker容器系统时间以避免TLS握手失败问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计732个文字,预计阅读时间需要3分钟。
直接查看时间——容器或主机时间不准确,是导致+TLS+握手失败最隐蔽也最常被忽略的原因之一。证书验证严格依赖于系统时钟,即使偏差几十分之一秒,都可能导致+Let's Encrypt+或自签名证书被判定为未生效或已过期,从而引发+x509: certificate has expired or is not yet valid+或+TLS handshake timeout+等错误。
确认时间是否真的偏移
别猜,先测。重点检查三处时间一致性:
- 宿主机本地时间(
date -u) - Docker 容器内时间(
docker exec -it <容器名> date -u) - 若用 WSL2,还要单独查 WSL2 发行版时间(
wsl -d Ubuntu-22.04 date -u)
任意两处 UTC 时间差超过 1 秒,就已超出多数 TLS 栈容忍范围;差值超 90 秒,基本必现握手失败。
本文共计732个文字,预计阅读时间需要3分钟。
直接查看时间——容器或主机时间不准确,是导致+TLS+握手失败最隐蔽也最常被忽略的原因之一。证书验证严格依赖于系统时钟,即使偏差几十分之一秒,都可能导致+Let's Encrypt+或自签名证书被判定为未生效或已过期,从而引发+x509: certificate has expired or is not yet valid+或+TLS handshake timeout+等错误。
确认时间是否真的偏移
别猜,先测。重点检查三处时间一致性:
- 宿主机本地时间(
date -u) - Docker 容器内时间(
docker exec -it <容器名> date -u) - 若用 WSL2,还要单独查 WSL2 发行版时间(
wsl -d Ubuntu-22.04 date -u)
任意两处 UTC 时间差超过 1 秒,就已超出多数 TLS 栈容忍范围;差值超 90 秒,基本必现握手失败。

