证书自动续签方案
安装 acme.sh
1
2
3
4
|
git clone --depth 1 https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m my@example.com
alias acme.sh=~/.acme.sh/acme.sh
|
my@example.com
可以指定自己的邮箱。
修改默认 CA 服务商,默认的是 zerossl
1
|
./acme.sh --set-default-ca --server letsencrypt
|
主域名,子域名签发证书
可以使用 HTTP/DNSAPI 两种方式
1
|
acme.sh --issue -d example.com -w ./nginx/site/
|
--issue
表示要签发证书
-d
指定要签发的域名,签发之前要先设计好 DNS 解析到当前主机哦。
-w
指定网站的根目录。
--key-file
指定 key 文件写入哪里
--fullchain-file
指定 cer 文件写入哪里
泛域名签发证书
1. 设置 DNS API
必须使用 DNS API 的方式
如果是阿里云的证书,可以使用以下方式。(其它参考)
1
2
|
export Ali_Key="<key>"
export Ali_Secret="<secret>"
|
2. 签发泛域名证书
1
|
acme.sh --issue -d example.com -d '*.example.com' --dns dns_ali
|
将签发的证书安装到指定目录下
程序将会每 60 天重新签发
1
2
3
4
5
6
7
|
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"
acme.sh --install-cert -d puff.golang.space --key-file /home/apps/gb/nginx/certs/key.pem --fullchain-file /home/apps/gb/nginx/certs/cert.pem --reloadcmd "/home/apps/gb && docker compose exec -it nginx nginx -s reload"
|
其它
1
2
3
4
|
# 升级并保持自动更新
acme.sh --upgrade --auto-upgrade
# 关闭自动更新
acme.sh --upgrade --auto-upgrade 0
|
参考:
https://github.com/acmesh-official/acme.sh
https://www.orcy.net.cn/1337.html
https://developers.weixin.qq.com/community/develop/article/doc/0008ae40ca0af83d0d7e3bb6b56013
https://cloud.tencent.com/developer/article/2218945?areaSource=102001.10&traceId=XFvJArbxeBBM3HvlN8MOV
https://www.jianshu.com/p/387dcb9566f7