使用acme.sh自动化部署 SSL 证书,配置HTTPS

Github 仓库地址

  1. Install

上面命令执行完成后, 可以删除 “acme.sh” 目录
上面的安装命令执行了3个操作
1: 创建一个目录 “~/.acme.sh/”,用来存放所有部署文件
2:创建了一个别名 acme.sh=~/.acme.sh/acme.sh
3:创建了一个定时任务0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null 用来自动判断证书是否需要更新

  1. 域名 DNS 验证

域名 DNS 验证有多种方式, 推荐使用注册上提供的 key、secret 自动化验证
以阿里云注册域名为例,使用以下命令导入 key、secret

更多域名注册商,请参考dnsapi · acmesh-official/acme.sh Wiki · GitHub

  1. 生成证书

这里以生成通配符证书为例(因为生成的通配符域名证书中并不包含根域名证书,所以我们要指定根域名),如果为了安全性可以更改域名选项。

  1. 将生成的证书拷贝到固定的目录

虽然可以直接使用生成路径中的证书文件,但是目录结构可能会变化,强烈不建议这样做,
正确的使用方式是使用 --install-cert命令,使用方式如下

提示:
1:使用force-reload,而不是reload,据测试, reload 并不会重新加载证书, 所以用的 force-reload。
2:当证书更新以后,reloadcmd会被自动调用,让服务器生效。

  1. 更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心。
当然你也可以手动测试更新,使用如下命令:
acme.sh --renew -d "domain.com" -d "*.domain.com" --force

查看自动更新域名列表,使用如下命令(下图所示):

acme.sh --list

删除自动更新域名,使用如下命令

acme.sh --remove -d domain.com

  1. 更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

  1. debug

如果出错, 请添加 debug log
acme.sh --issue ..... --debug
或者
acme.sh --issue ..... --debug 2
更多关于debug 的细节,参考How to debug acme.sh · acmesh-official/acme.sh Wiki · GitHub

649