配置nginx-proxy时acme-companion运行异常无法注册证书问题排查
故障排查与修复步骤
1. 优先修复容器时间同步异常
你日志中存在两个明确的时间相关错误:
- ASN1编码报错
error:0D0D90AD:asn1 encoding routines:ASN1_TIME_adj:error getting time - acme请求的时间戳全部显示为1970年1月1日(Unix初始时间)
acme协议对请求时间精度要求极高,时间偏差过大会直接导致API请求校验失败、域名解析缓存异常。修复方式:
在docker-compose.yml的acme-companion服务的volumes节点下新增两行挂载,同步宿主机时间:
- /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro
2. 修复bridge网络DNS解析故障
错误码6确实对应无法解析域名,本次解析失败的域名是日志中明确给出的Let's Encrypt API地址acme-v02.api.letsencrypt.org。默认Docker bridge网络经常出现DNS配置继承异常,导致容器内部无法解析公网域名。
- 先验证解析状态:执行命令
docker exec -it nginx-proxy-acme nslookup acme-v02.api.letsencrypt.org,如果返回解析失败即可确认该问题。 - 修复方式:在两个服务的配置下新增公共DNS配置,示例:
services: nginx-proxy: # 原有配置不变 dns: - 8.8.8.8 - 114.114.114.114 acme-companion: # 原有配置不变 dns: - 8.8.8.8 - 114.114.114.114
3. 额外校验配置项
确认你需要签发证书的业务服务容器,已经配置了以下三个环境变量,acme-companion会自动识别这些变量触发证书签发逻辑:
VIRTUAL_HOST:对应你的站点域名LETSENCRYPT_HOST:和VIRTUAL_HOST值保持一致LETSENCRYPT_EMAIL:你的邮箱,用于接收证书过期提醒
所有配置修改完成后,执行docker-compose up -d --force-recreate重建容器即可。
内容的提问来源于stack exchange,提问作者somerandomusername
相关产品推荐
相关产品推荐

