diff --git a/说明.md b/说明.md index 723013c..d39bb9b 100644 --- a/说明.md +++ b/说明.md @@ -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/ \ No newline at end of file