利用ACME 让 FreeSSL 证书自动续期

注意:对于重要的线上服务不要用自动续期了;可靠性不敢保证,遇到过几次执行续期脚本导致证书出问题的情况,服务突然就不能用了。

自动续期只用在不重要的服务商,省了事,就算出问题也影响不大。


当前 FreeSSL.cn开始提供自动续期的HTTPS证书,利用HACME 脚本实现,操作方法如下:

1、安装 acme.sh

建议切换到root模式,可以减少证书安装时的问题

sudo su

注意:MacOS 不用切换到root更简单。

git clone https://gitee.com/neilpang/acme.sh.git

cd acme.sh

./acme.sh --install -m [email protected]

注意:安装完成后,再重新打开命令行(如果是 SSH,选择重新连接),以使 acme.sh 命令生效。

2、添加域名

FreeSSL 站点申请证书,选择自动续期模式

3、对域名进行授权

获得域名验证(DCV)授权信息

到您的域名解析服务商添加解析记录

4、安装证书

点击【配置完成,立即检测】后获得证书申请命令

以 Nginx 部署为例,对上面命令 1 进行如下修改:

/root/.acme.sh/acme.sh --issue -d 域名   --dns dns_dp \
--server {你的专属 ACME 地址} \
--key-file /alidata/data/ssl/test.com/private.key \
--fullchain-file /alidata/data/ssl/test.com/full_chain.pem \
--reloadcmd     "/bin/lnmp nginx reload"

运行命令申请证书

执行上述命令后会自动将续期脚本添加到crontab定时任务,当证书还有一个月到期时会自动续期。

"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" 

5、配置到NGINX

listen 443 ssl;
ssl_certificate /alidata/data/ssl/test.com/full_chain.pem;
ssl_certificate_key /alidata/data/ssl/test.com/private.key;

官方文档:ACME v2证书自动化快速入门

6、删除对某个域名证书的自动续期

若某个域名不再使用,我们想把该域名在服务器定时任务中的自动续期关闭,可以执行以下命令

"/root/.acme.sh"/acme.sh --remove --domain {具体的域名}

[Thu 28 Sep 2023 09:34:39 AM CST] {具体的域名} is removed, the key and cert files are in /root/.acme.sh/{具体的域名}
[Thu 28 Sep 2023 09:34:39 AM CST] You can remove them by yourself.

删除自动续期后你也可以选择删除原来生成的证书文件, 位于目录 /root/.acme.sh/{具体的域名} 下.

注意 --remove参数只是停止续期,并未吊销证书。

7、注意

通配符域名证书的标识范围:

如设置通配符域名证书 *.test.com ,a.test.com 域名可以使用该证书,但 a.b.test.com 则不行

引用链接

[1] FreeSSL: https://freessl.cn/
[2] ACME v2证书自动化快速入门: https://blog.freessl.cn/acme-quick-start/