利用acme.sh申请ssl证书&自动更新证书


本文将详细介绍如何利用acme.sh申请ssl证书&自动更新证书

说明

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

安装脚本

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

生成证书(这里是DNS方式)

Cloudflare方式:

准备工作:

1.申请CF_Token:访问cloudflare 个人账户,点击创建令牌,使用编辑区域 DNS模板,进行如下配置:

1
2
3
4
5
6
7
8
权限:
区域 DNS 编辑
账户 账户设置 读取
区域 区域 读取
账户资源:
包括 您的账户
区域资源:
包括 特定资源 选中特定域名

然后点击下一步预览,在下一步即可生成复制备用
2.获取CF_Account_ID:打开cloudflare,链接后面那串就是所需要的id,复制备用

正式安装

在控制台输入:

1
2
3
export CF_Token="你准备的CF_Token"
export CF_Account_ID="你准备的CF_Account_ID"
acme.sh --issue --dns dns_cf -d youdomain.com # 通配符可填写*.youdomain.com

然后就是等待,成功的话你会看到一堆success

copy/安装 证书(这里是nginx方式)

nginx

使用以下代码:

1
2
3
4
acme.sh --install-cert -d example.com \
--key-file 你的证书存放路径/cert.key \
--fullchain-file 你的证书存放路径/cert.pem \
--reloadcmd "service nginx force-reload"

更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

更新 acme.sh

升级 acme.sh 到最新版 :

1
acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

1
acme.sh  --upgrade  --auto-upgrade

之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

1
acme.sh --upgrade  --auto-upgrade  0

其他

1.其他安装方式请参照:官方wiki
2.CF_Token等可复用的值会保存在~/.acme.sh/account.conf

nginx配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 443 ssl;
server_name youdomain;
root /data/nodeapps/tools;
ssl_certificate "你的证书路径/cert.pem";
ssl_certificate_key "你的证书路径/cert.key";
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

location / {
index index.html;
proxy_cache my_cache;
}
}