1. 安装 acme.sh
安装很简单, 一个命令:
curl https://get.acme.sh | sh -s email=my@example.com
把 my@example.com
改成自己的邮箱
安装成功后,会为你自动创建定时任务, 如果快过期了, 需要更新, 则会自动更新证书。
默认情况下,证书将每60天
更新一次。
切换默认证书
目前 acme.sh 支持 Let’s Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用下面命令:
#切换 Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
#切换 Buypass
acme.sh --set-default-ca --server buypass
#切换 ZeroSSL
acme.sh --set-default-ca --server zerossl
#切换 SSL.com
acme.sh --set-default-ca --server ssl.com
#切换 Google Public CA
acme.sh --set-default-ca --server google
2. 设置DNS验证
文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
以 CloudFlare为例:使用全局API密钥
准备:全局API密钥在 我的个人资料–API令牌–Global API Key 获得
设置CloudFlare DNS自动验证使用下面命令:
export CF_Key="763eac4f1bcebd8b5c95e9fc50d010b4" #API密钥
export CF_Email="123456@qq.com" #登录邮箱
3. 生成证书
如果之前安装过证书,后面加 --force
参数,
acme.sh --issue --dns dns_cf -d xxx.com -d *.xxx.com
成功之后,会在 ~/.acme.sh/
目录生成以域名为名称的文件夹,里面包含了证书和各种信息
不要通配符,可以去掉:-d *.xxx.com
,如果有多个子域名,后面加 -d x.xxx.com
--dns dns_cf
表示使用CloudFlare DNS 自动验证
4. 安装证书(重点)
假设:你网站使用的是nginx,使用以下命令
acme.sh --install-cert -d xxx.com -d *.xxx.com \
--key-file /www/server/panel/vhost/cert/xxx.com/privkey.pem \
--fullchain-file /www/server/panel/vhost/cert/xxx.com/fullchain.pem \
--reloadcmd "service nginx force-reload"
使用这条命令时先要生成证书(第三步)
不要通配符,可以去掉:-d *.xxx.com
,如果有多个子域名,后面加 -d x.xxx.com
命令解读
--install-cert
#安装证书--key-file
#指定安装证书密钥路径--fullchain-file
#指定安装证书路径--reloadcmd
#重新加载nginx生效
为什么要使用那么多参数
因为acme证书虽然60天更新一次,但是更新的证书路径是:
~/.acme.sh/xxx.com
你的域名指向的证书路径并不是在
~/.acme.sh/
不能使用~/.acme.sh/文件夹中的证书文件,它们仅供内部使用,文件夹结构将来可能会更改
这些参数会被acme保存起来,下次自动更新时就会自动把证书安装到指定的路径,然后帮你重新加载nginx生效
所以,你要先知道你的域名证书指向的路径在哪,以宝塔面板为例:
/www/server/panel/vhost/cert/xxx.com/fullchain.pem
/www/server/panel/vhost/cert/xxx.com/privkey.pem
5. 签发ECC证书
使用以下命令 (以nginx为例)
acme.sh --install-cert -d xxx.com -d *.xxx.com --keylength ec-256 \
--key-file /www/server/panel/vhost/cert/xxx.com/privkey.pem \
--fullchain-file /www/server/panel/vhost/cert/xxx.com/fullchain.pem \
--reloadcmd "service nginx force-reload"
多了 --keylength ec-256
参数
6.强制更新证书
所有证书将每60天自动更新一次,但你要强制更新的话
acme.sh --renew -d xxx.com --force
或者,对于ECC证书:
acme.sh --renew -d xxx.com --force --ecc
如何停止证书续订
要停止证书的续订,您可以执行以下操作以从续订列表中删除证书:
acme.sh --remove -d xxx.com [--ecc]
不会从磁盘中删除证书/密钥文件。
您可以自己删除相应的目录 (例如 ~/.acme.sh/xxx.com
)。
如何升级 acme.sh
您可以将acme.sh更新为最新代码:
acme.sh --upgrade
您还可以启用自动升级:
acme.sh --upgrade --auto-upgrade
然后acme.sh将自动保持最新。
禁用自动升级:
acme.sh --upgrade --auto-upgrade 0