在阿里云买的 pro 证书有效期是一年,但是只能免费购买 4 个pro,已经用完了。剩下的就是每年 20 个,每个 3 个月的有效期。每三个月都需要自己去换很麻烦,还会出现忘记的情况,就想着能自动化部署,自动续期就完美。
安装 acme.sh
sudo curl https://get.acme.sh | sh
激活
source ~/.bashrc
配置阿里云 API Key
到阿里云控制台 → RAM 用户 AccessKey 管理
创建专用 RAM 用户
-
进入 阿里云 RAM 控制台
-
创建一个 仅用于 SSL 自动续签的子用户(比如叫 acme-cert-bot)
-
点击「添加权限」,最简单:直接绑定系统策略 AliyunDNSFullAccess 可以管理你账号下所有域名的 DNS
设置网络访问限制
- 打开 RAM 控制台 → 用户 → 安全设置
- 找到「AccessKey 级网络访问限制策略」
- 添加你的 固定公网 IP(或所在网段)
- 例如你的 ECS 公网 IP 是 1.2.3.4,就在白名单里填 1.2.3.4/32
- 如果有多个 ECS,就把多个 IP 都加上
- 保存后,只有这些 IP 发出的 API 请求才能用这个 AK
点击用户 AccessKey
网络访问限制策略
服务器配置
设置Ali_key
然后在服务器上执行:
export Ali_Key="你的AccessKeyId"
export Ali_Secret="你的AccessKeySecret"
果想永久生效,可以把这两行加到 ~/.bashrc 或 ~/.profile
echo 'export Ali_Key="你的AccessKeyId"' >> ~/.bashrc
echo 'export Ali_Secret="你的AccessKeySecret"' >> ~/.bashrc
source ~/.bashrc
改用 Let’s Encrypt
- Let’s Encrypt 不需要 EAB,免费签发 SSL
- 命令示例(使用阿里云 DNS 验证):
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue --dns dns_ali -d ronhai.com -d www.ronhai.com --keylength ec-256
然后安装证书
~/.acme.sh/acme.sh --install-cert -d ronhai.com \
--ecc \
--key-file /home/xx/www/ssl/ronhai.com.key \
--fullchain-file /home/xx/www/ssl/ronhai.com.pem \
--reloadcmd "sudo systemctl reload nginx"
验证证书
~/.acme.sh/acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
ronhai.com "ec-256" www.ronhai.com LetsEncrypt.org 2025-09-23T09:33:37Z 2025-11-21T09:33:37Z