0%

SSL证书自动更新

转载:告别焦虑:使用 acme 实现 ssl 免费证书到期自动更新

SSL证书

freeSSL网站申请的TrustAsia免费证书。

什么是ACME协议

ACME(Automatic Certificate Management Environment)协议是由 Let’s Encrypt 推出的自动化 SSL 证书管理协议。通过 ACME 协议,网站管理员可以轻松地自动申请、更新和管理 SSL 证书,完全告别手动操作的烦恼。

如何使用

安装 acme

通过 SSH 登录到web 服务器,建议切换root用户,减少证书安装时的问题。

1
2
3
4
5
# 官方下载地址
curl https://get.acme.sh | sh -s email=my@example.com

# 备用下载地址
curl https://gitcode.net/cert/cn-acme.sh/-/raw/master/install.sh?inline=false | sh -s email=my@example.com

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

获取申请命令

登录freeSSL网站,在左侧菜单栏选择【ACME】-【ACME客户端】,然后申请证书。如下:

复制ACME安装命令,到服务器上执行,即可完成证书申请。如果需要先进行域名验证,先按照要求验证域名即可。

部署证书

默认生成的证书都会放在安装目录下:~/.acme.sh/。然而,不要在服务器中直接引用该目录下的证书文件,也不要手动将证书文件拷贝到具体的 web 服务器中,因为手动拷贝会导致之后的证书更新流程无法完全自动化。

正确的方式是使用 acme.sh 的安装证书命令,这样 acme.sh 会自动将证书文件拷贝到指定的目录中,并记录下拷贝命令。在之后的自动更新过程中,acme.sh 会执行该拷贝步骤,从而实现证书更新流程的完全自动化。

1
2
3
4
acme.sh --install-cert -d seanblog.cn \
--key-file /usr/local/docker/nginx/cert/seanblog.cn.key.pem \
--fullchain-file /usr/local/docker/nginx/cert/seanblog.cn.fullchain.pem \
--reloadcmd "docker container restart nginx"

由于我使用的是 docker 运行的 nginx ,因此我的重载命令是 docker container restart nginx,如果你直接使用 nginx 可以使用命令 service nginx force-reload。

使用证书

1
2
3
4
5
6
server {
listen 443 ssl;
ssl_certificate /usr/local/docker/nginx/cert/seanblog.cn.fullchain.pem;
ssl_certificate_key /usr/local/docker/nginx/cert/seanblog.cn.key.pem;
# ...
}

参考文章

除转载了告别焦虑:使用 acme 实现 ssl 免费证书到期自动更新外,还参考了以下文章:

ACME 自动化快速入门

您的支持是对我最大的动力 (●'◡'●)