使用Acme.sh自动更新SSL证书

今年来阿里云更新了免费域名策略,原本免费1年的SSL证书没有了,说是因为供应商原因,现在只能提供3个月有效期的版本,而原本1年免费的版本…要加钱!

作为一个资深羊毛党,果断不能惯着他,所以闲来网上研究了一下,准备搞上一个自动申请并更新SSL的方式,让程序每隔一段时间自动获取并同步更新SSL证书。

首先提供一下Acme.sh的主页地址,要感谢作者制作了这么好用的工具。

Linux系统下,万物之始必是更新系统 apt update,更新完以后安装acme.sh脚本,如果你没有curl可以使用get或者apt安装一个。

Shell命令: curl https://get.acme.sh 

脚本安装并执行完以后会自动帮你alias一个acme.sh的命令,安装完成后要重新加载一下.bashrc文件:source ~/.bashrc,你可以通过acme.sh -h来确认是否已安装好。

使用下面的命令来申请你的证书:

acme.sh --issue -d xxxxx.com --nginx #niginx服务器版本,apache服务器请对应修改

或者使用dns方法一劳永逸:
在阿里云或你的域名解析供应商平台申请APIKEY:
在~/.acme.sh/中打开acme.sh.env文件,在下面内容后添加你在供应商平台申请到的APIkey和Secret

export LE_WORKING_DIR="/root/.acme.sh"
alias acme.sh="/root/.acme.sh/acme.sh"

输入你的key和密钥:

export Ali_Key="************"
export Ali_Secret="************"

后续可以通过如下命令直接更新,不需要再指定相关内容

acme.sh --issue -d xxxxxx.com --dns  dns_dp

默认生成的证书都放在安装目录下: ~/.acme.sh/,但是不要直接使用此目录下的文件。可以使用--install-cert命令自动完成证书复制:

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 force-reload"

如果一切看起来都运行正常,那么你的证书将会在约60d左右自动更新一次。不需要我们再进行干预。

辅助参考资料:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E(中文)

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注