11. acme.sh自动续签HTTPS证书教程

1 前言

目前https数字证书对于一个网站来说几乎是必备的,如果你对https还不太理解,可以参考文章:HTTP与HTTPS

https证书有免费的,也有付费的,一般付费的证书使用时间会更长,而免费的证书目前普遍最多使用3个月就会过期,一旦过期了就需要重新去申请。

这显然是一个比较繁琐的事情,但幸好有开源工具可以帮助我们自动续签免费的https证书:acme.sh

2 acme安装

如果你的服务器可以连外网,那就可以直接运行命令安装,同时最好你的当前用户修改为root,否则后续可能会导致无法执行自动更新证书的命令:

curl https://get.acme.sh | sh -s email=my@example.com

注意这里的邮箱需要修改为你自己的。

如果你的服务器不能连外网,那就需要使用下面这几条命令从国内安装:

git clone https://gitee.com/neilpang/acme.sh.git --depth 1
cd acme.sh
./acme.sh --install -m my@example.com

同样注意需要修改为你自己的邮箱。

安装完工具后,我们就需要生成域名的https证书,我使用的是DNS验证的方式进行生成。

这里几乎包含了所有DNS服务厂商的使用方式:dnsapi

由于我的域名在阿里云,所以这里就介绍阿里云的使用方法,实际上都差不多:从DNS厂商拿到密钥,然后用acme登录。

3 密钥申请

首先去阿里控制台创建一个身份密钥:RAM

image.png

然后选择用key访问:

image.png

接着保存好创建的key与secret,后面登录用得到,一旦离开了这个页面,就无法找回了:

image.png

最后还需要给这个账号添加管理DNS的权限:

image.png

此时我们就可以通过密钥的方式去管理DNS解析了。

4 证书自动续签更新

然后回到我们的linux服务器,使用密钥进行登录:

export Ali_Key="<key>"
export Ali_Secret="<secret>"
./acme.sh --issue --dns dns_ali -d example.com -d *.example.com

注意这里命令中的kye与secret都需要换成你自己的,域名也需要换成你自己的。

此时这个命令会开始进行一系列的验证、并为你生成好https的证书。

最后我们只需要在运行命令将证书安装好就行了,比如我使用的是nginx服务器、安装命令为:

acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx reload"

注意这里的域名需要换为你自己的,key与cert的路径也需要换为你nginx配置文件中配的证书路径。

比如我的nginx配置文件中的证书路径为:

image.png

那么就需要将这两个路径分别填入上面的命令中。

至于最后的reloadcmd命令,就是在更新完证书后执行什么命令可以让服务重加载证书,这里执行的命令就是service nginx reload,也就是让nginx这个服务器reload一下。

至此,我们就完成了全部的流程,后续每两个月acme就会自动申请证书、并自动更新服务器,完全不需要我们手动去操作了。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux