ACME-脚本使用

ACME Github 仓库
ACME 中文使用说明
acme.sh 的使用文档

介绍

ACME, Automatic Certificate Management Environment, 是一种用于自动化管理 SSL/TLS 证书的协议, 主要由 Let’s Encrypt (一个免费的 CA, 即证书颁发机构) 提出. 它允许客户端与证书颁发机构 (CA) 进行交互, 以便自动申请, 验证, 续订和撤销证书.

acme.sh 实现了 acme 协议, 可以从 let’s encrypt 生成免费的证书. 主要步骤为:

  1. 安装 acme.sh
  2. 生成证书
  3. copy 证书到 nginx/apache 或者其他服务
  4. 更新证书
  5. 更新 acme.sh

安装 acme.sh

1
curl https://get.acme.sh | sh -s email=my@example.com
  • 邮箱设置用于接受通知

其会:

  • 克隆 ACME 仓库到 $HOME/.acme.sh/ 目录
  • .bashrc.zshrc 中加入一行脚本, 以加载 $HOME/.acme.sh/acme.sh.env 文件 (会创建别名)
  • "/home/jie/.acme.sh"/acme.sh --cron --home "/home/jie/.acme.sh" > /dev/null 加入当前用户的 crontab 文件

也就是把自动申请这些步骤都完成了. 其每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书. (前提是后面把证书生成了吧)

可以用:

1
acme.sh -v

查看是否安装成功.

生成证书

使用 ACME 生成证书前, 可以通过 httpdns 方式来验证域名是否是自己的, 之后才能搞.

http 方式验证

该方式具体见官网.

1
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/

(只需指定域名和网站根目录)
acme.sh 会自动生成验证文件, 并放到网站的根目录, 然后自动完成验证, 最后会删除验证文件.

dns 方式验证

这种方式的好处是, 不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是, 如果不同时配置 Automatic DNS API, 使用这种方式 acme.sh 将无法自动更新证书, 每次都需要手动再次重新解析验证域名所有权.

1
2
acme.sh --issue --dns -d mydomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

之后根据输出在域名管理面板处添加 txt 记录.

解析完成后, 重新生成证书, 注意是 --renew 选项:

1
2
acme.sh --renew -d mydomain.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

查看证书信息

1
acme.sh --info -d example.com

ACME-脚本使用
http://example.com/2024/09/12/ACME-脚本使用/
作者
Jie
发布于
2024年9月12日
许可协议