acme自动续费免费SSL证书

目前云商提供的免费正式都是3个月的有效期,过期更换很麻烦

安装acme

1
curl https://get.acme.sh | sh

如果安装服务器在国内,访问github困难,可以使用以下方法

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

这一步会把acme.sh安装到~/.acme.sh/目录,并自动配置一个名叫acme.shalias

获取DNS解析密钥

acme.sh支持阿里云、腾讯云、godaddy等数十种解析商的自动集成,这里以阿里云为例,其它的参考官方介绍

访问https://ram.console.aliyun.com/users,如果还没有创建过用户这里创建一个

新建完后一定要记得添加“云解析”相关的权限,否则后面步骤会失败

然后复制AccessKey IDAccessKey Secret

注册厂商账号

此处使用ZeroSSL厂商测试

1
acme.sh  --register-account  -m xxx@youremail.com --server zerossl

生成证书

1
2
3
export Ali_Key="上面记录的AccessKey ID"
export Ali_Secret="上面记录AccessKey Secret"
acme.sh --issue -d test.wangweiye.cc --dns dns_ali

看到如下界面,证书就生成好了

同时会自动创建CT任务检测所有证书,如果快过期了(貌似是60天)需要更新,则会自动更新证书

使用证书

注意千万不要直接让nginx使用~/.acme.sh/目录下的证书,因为这个文件是会变化的,正确方式是:

1
2
3
4
acme.sh --install-cert -d test.wangweiye.cc \
--fullchain-file /usr/local/nginx/conf/cert/test.wangweiye.cc.cert \
--key-file /usr/local/nginx/conf/cert/test.wangweiye.cc.key \
--reloadcmd "nginx -s reload"

证书更新后会自动调用reloadcmd,然后确保你的nginx中引用的是上述证书文

最终效果