< 自用文 acme.sh > 使用 Cloudflare API 自动更新证书

发布于:2025-09-15 ⋅ 阅读:(22) ⋅ 点赞:(0)

启因:

练习用 Python 写网站 https://bjn.halaldeli.cn  不能打开,浏览器报: ERR_CERT_DATE_INVALID / 证书日志无效  

排查:

1. 确定是证书已经过期.

         浏览器中有显示,没存图

2. crontab 任务

 acme.sh 为什么没有自己更新?而且有进程。

3. 更新 acme.sh

acme.sh --upgrade

3. 手动更新证书

命令行中 bjn.halaldeli.cn <- 替换需要升级的域名

acme.sh --renew -d bjn.halaldeli.cn --force

上面的红字:

“[Sun Sep 14 09:37:20 PM CST 2025] It seems that you are using dns manual mode. Read this link first: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode

查了一下,正好我用的 CloudFlare ,还可以用 API 来更新 TXT 记录。

解决方法:

1. 在 CloudFlare 中创建一个 DNS edit API

2. 添加 API (CF_Token)到(启动文件)环境变量

变量名:CF_Token

export CF_Key="Cloudflare 生成的 EDIT ZONE DNS"

3. 测试一下 API 有效

见图中: API Token is valid and active 即成功

4. 获取新证书,并安装到 nginx

1) 为 bjn.halaldeli.cn 获取新证书

acme.sh --issue --dns dns_cf -d bjn.halaldeli.cn

2) 安装新证书到 nginx , 并重启 nginx

/root/.acme.sh/acme.sh --install-cert -d bjn.halaldeli.cn --ecc \
--key-file       /etc/nginx/ssl/bjn.halaldeli.cn.key  \
--fullchain-file /etc/nginx/ssl/bjn.halaldeli.cn.cer \
--reloadcmd      "systemctl restart nginx"

5 检查生效

再用浏览器打开网站:

 有关文章:

< 自用文儿 使用 acme 获取网站证书 > ACME 脚本 script: acme.sh 获得证书 觉得比 certbot 方便

< 自用文儿 Ubuntu 24 安装 v2射线 > 需要安装 nginx acmc ufw 这篇文章介绍使用 acmc 在 80 端口解封前 申请免费 SSL 证书

这是 GEMINI 生成的图片。  by the way , Midjourney 出图,确实好过 GEMINI GROK4 几条件街。