中国区用户【acme.sh.log日志文件timezone时间差】矫正方法

master
guoqw7 2025-05-07 10:59:38 +08:00
parent 2d5b103189
commit b18c7c4cc0
1 changed files with 49 additions and 0 deletions

@ -142,6 +142,7 @@ export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
```
** 注意: **中国区用户在shell脚本中最好添加`export TZ='Asia/Shanghai'`不然日志文件会有时差问题详见本文档【9. acme.sh.log日志文件时间差矫正】章节
现在我们可以签发通配符证书了:
@ -299,4 +300,52 @@ docker run --rm -it \
上述例子中使用 Cloudflare 的 DNS 来签发证书,并通过把 acme.sh 链接到容器[代理A],来转发 curl 请求(请按照自己实际设定修改)
# 9. acme.sh.log日志文件时间差矫正
## 时间差问题:
证书每 60 天更新一次(可自定义),自己通过`/用户名/.acme.sh/acme.sh.log`路径下的日志实测查看:
会在**中午**检查并生成检查记录:`[12:48:01 AM CST 2025] Running cmd: cron......`
可官方文档明明指出,会在**每日凌晨**自动检查并生成检查记录。自己再次通过linux系统查看`acme.sh.log`的更新时间,的确是**每日凌晨**。那就说明.acme.sh运行时在中国产生了时差。
## 解决方案:
1. 在 `account.conf` 中指定时区环境变量
- 编辑 `acme.sh` 的配置文件 `~/.acme.sh/account.conf`,添加以下行:
```shell
export TZ='Asia/Shanghai'
```
- (如果文件已存在其他配置,直接追加即可)
2. ‌让配置生效
- 执行以下命令,使 `acme.sh` 重新加载配置并生成新日志:
```bash
acme.sh --renew-all --force
```
- 或针对特定域名强制更新:
```bash
acme.sh --renew -d yourdomain.com --force
```
3. **验证日志时间**
- 查看 `acme.sh.log` 日志文件,确认时间是否已修正:
```
tail -f ~/.acme.sh/acme.sh.log
```
## 附加说明‌:
- **原理**‌:通过 `export TZ='Asia/Shanghai'`,强制指定 `acme.sh` 运行时的时区环境变量,覆盖系统默认时区,确保日志时间与本地时间一致。
- **适用场景‌:**
- 系统时区已正确设置,但 `acme.sh` 因运行环境(如 `cron` 任务、Docker 容器)未继承时区。
- 日志服务(如 `rsyslog`)未使用本地时间记录日志。
- **【可选】通过命令参数矫正时区:**
1. **若通过 `cron` 自动续签**
- 在 `cron` 任务中直接指定时区变量,确保任务运行时环境正确:
```bashCopy
0 0 * * * export TZ='Asia/Shanghai'; /path/to/acme.sh --renew-all
```
2. **若使用 Docker 运行 `acme.sh`**
- 在启动容器时添加时区参数:
```bash
docker run -e TZ=Asia/Shanghai neilpang/acme.sh
```
小结:通过上述配置,日志时间应能正确对齐本地时间。若问题仍存在,请检查系统全局时区或容器运行时环境是否冲突。
***
最后,本文并非完全的使用说明,还有很多高级的功能,更高级的用法请参看 wiki 页面https://github.com/acmesh-official/acme.sh/wiki/