话不多说,直接开始🚀
安装
- 在线安装
curl https://get.acme.sh | sh -s email=my@example.com
或者:
wget -O - https://get.acme.sh | sh -s email=my@example.com
这是安装成功后的目录结构
安装好后打开一个新的终端检查
acme.sh -v
问题
写在前面,原因是在我申请证书时一直失败,寻找后得知是服务器问题,所以还是写在这里提前修改较好
Timeout: The CA is processing your order, please just wait
CAUTION
出现提示:Pending, The CA is processing your order, please just wait
原因是 acme.sh 默认的 CA 服务器是 zerossl,这个经常抽风
把 CA 服务器改成 letsencrypt 即可
acme.sh --set-default-ca --server letsencrypt
DNS 验证
因为我的域名是在腾讯云购买的,所以可以使用账户 api 或 Token 的方式进行验证,
1. 使用账户的 API 密钥
推荐使用子账户的API,没有子账户的可以先去创建:子账户创建
CAUTION
创建后一定要把 SecretId 和 SecretKey 给记下来存放好,因为只会显示一次,如果忘记了就只能重新创建密钥!
- 在终端输入以下命令,将密钥导入环境变量
export Tencent_SecretId="SecretId"
export Tencent_SecretKey="SecretKey"
- 申请证书
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com
- example.com :表示主域名
- *.example.com : 表示泛域名
想申请哪个就写哪个,但至少要写有一个域名
2. 使用 DNSPod Token
创建 Token :DNSPod Token
CAUTION
Token 创建好后一定要复制下来存放好,因为只会显示一次,如果忘记了就只能重新创建!
- 配置环境变量
export DP_Id="id"
export DP_Key="Token"
- 申请证书
acme.sh --issue --dns dns_dp -d example.com -d *.example.com
安装证书
证书申请成功后,会存放在 acme.sh 的安装目录下
接下来开始安装证书,不推荐直接使用安装目录下的证书,可以将证书拷贝到专门用于存放证书的目录
acme.sh --installcert -d domain.com --key-file /path/ssl/domain.com.key --fullchain-file /path/ssl/domain.com.cer
- –installcert :安装证书命令
- -d domain.com :会读取对应域名配置
- –key-file :将证书私钥拷贝到该参数指定的路径
- –fullchain-file :将证书链拷贝到该参数指定的路径
TIP
这里我使用的是 domain.com.cer,如果 nginx 验证失败也可以修改为使用 fullchain.cer
安装成功后配置好 nginx 的 ssl_certificate 和 ssl_certificate_key 参数,然后重启 nginx 服务
ssl_certificate /path/ssl/domain.com.cer;
ssl_certificate_key /path/ssl/domain.com.key;
自动续期
在使用 acme.sh --issue
和 acme.sh --install-cert
命令成功部署后,acme.sh已经自动创建了 crontab 定时任务
查看定时任务
crontab -l
可以修改执行时间
crontab -e
手动续期
--force
表示进行强制续期
acme.sh --renew -d domain.com --force
自动续期和手动续期我都没试过,毕竟我的证书时间还没到👻