本文以本人使用的角度写出该文章,某些环境和命令适用于特定的场景,不保证广泛使用,仅供参考
安装
curl https://get.acme.sh | sh -s email=lxddemm@163.com
其他安装方式:
wget -O - https://get.acme.sh | sh -s email=my@example.com
或者git安装:
git clone --depth 1 https://github.com/acmesh-official/acme.sh.gitcd acme.sh./acme.sh --install -m my@example.com
植入系统命令
alias acme.sh='/root/.acme.sh/acme.sh'
这样可以直接使用acme.sh
命令运行
获取证书
acme.sh --issue --dns dns_ali -d nankle.top -d *.nankle.top
本次使用的是dns方式申请证书,还有其他方式,本文不做介绍
dns方式需要在域名的dns解析中新增一条记录来验证,--dns 后面的参数是dns_ali代表阿里云,其他也可以使用。
修改阿里云key用于自动更新dns
nano /root/.acme.sh/acme.sh.env
将阿里云的密钥放入文件内,格式为:
export LE_WORKING_DIR="/root/.acme.sh"
alias acme.sh="/root/.acme.sh/acme.sh"
export Ali_Key="*****"
export Ali_Secret="*******"
重载环境变量
source ~/.bashrc
安装并重载
前提是上一步证书申请成功,接下来将申请成功的证书转移到nginx的证书目录,并重载nginx
acme.sh --install-cert -d nankle.top --key-file /opt/helo/nginx/cert/nankle.top.key --fullchain-file /opt/helo/nginx/cert/nankle.top.pem --reloadcmd "docker exec nginx nginx -s reload"
执行该命令后,命令中的参数将自动保存在~/.acme.sh/example.com目录下的example.com.conf文件里,定时器更新证书的时候实现自动部署。
上述命令把下发的证书复制到你指定的位置,这样避免你直接从“~/.acme.sh/”读取证书,然后重新加载nginx或apache以刷新证书。
域名为必需参数,其它参数为可选。
但要注意的是,reloadcmd参数非常重要(reloadcmd后面的参数为重新加载nginx或Apache的命令,可以根据系统的不同作相应修改),即使更新了证书,但是nginx或apache没有重新加载,证书是不是会刷新到服务中去的
由于本人的nginx是安装在docker内的,因此使用下面命令进行重载(已经包含在上面的命令中)
nginx重载
docker exec nginx nginx -s reload
续签SSL证书
执行过上面的命令后,acme已经知道如何转移证书文件以及如何重载nginx,后面执行续签命令,程序可自动续期并重载nginx
手动续签方式
acme.sh --renew -d nankle.top -d *.nankle.top
如果已经快到期,离到期2个月,该命令会重新申请新的证书,时间不到只会打印日志。
强制更新
无论是否到期都会强制重新申请新的证书
acme.sh --renew -d nankle.top -d *.nankle.top --force
定时任务配置
45 10 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
将上面的代码放入crontab中实现自动检测自动续签。crontab -e 命令编辑定时任务
其他命令
升级acme.sh:
acme.sh --upgrade
自动升级,使用以下命令,有更新就自动更新,不需人工干预:
acme.sh --upgrade --auto-upgrade
关闭自动升级使用以下命令:
acme.sh --upgrade --auto-upgrade 0
查看acme.sh已签发证书的域名:
acme.sh --list
从acme.sh中移除不需要再次签发证书的域名:
acme.sh --remove -d example.com
删除acme.sh:
acme.sh --uninstall
切换CA服务商:
acme.sh --set-default-ca --server letsencrypt
acme.sh --set-default-ca --server google
acme.sh --set-default-ca --server zerossl
评论区