网站部署
使用 acme.sh 一键申请并自动续期证书的完整步骤
更新于 2026-09-24
安装 acme.sh
bash
curl https://get.acme.sh | sh -s email=my@example.com
# 或者更安全:
# curl -O https://get.acme.sh
# sh get.acme.sh安装成功后重新登录终端,或者执行:
bash
source ~/.bashrc确认是否安装成功:
bash
acme.sh --version使用 DNS API 的方式
证书的 DNS 验证方式见 acme.sh DNS API 说明。在这个页面中找到 Aliyun,再到阿里云 RAM 用户控制台 创建子用户,拿到 Ali_Key 和 Ali_Secret,然后在服务器终端执行下面的命令。
步骤一:进入阿里云 RAM 控制台
登录阿里云后台 RAM 控制台。左侧点击「用户管理」,再点「创建用户」。
步骤二:创建子用户
- 选择普通用户(RAM 用户)
- 填写用户名,例如 acme-cert-user
- 勾选编程访问(AccessKey 方式)
- 不要选控制台登录
- 点击确认
步骤三:给用户授权
- 创建完成后,进入刚建好的用户详情页
- 找到权限管理,点击添加权限
- 搜索 AliyunDNSFullAccess
- 勾选该策略,点击确定
这样,这个用户就有了对阿里云 DNS 服务的完全操作权限。
步骤四:生成 AccessKey
- 在用户详情页打开安全设置,进入 AccessKey 管理
- 点击创建 AccessKey
- 系统会生成 AccessKeyId 和 AccessKeySecret
Secret 只会显示一次,创建后马上保存。
步骤五:在服务器配置环境变量
在阿里云服务器终端执行:
bash
export Ali_Key="<key>"
export Ali_Secret="<secret>"为了长期生效,可以写入 ~/.bashrc:
bash
echo 'export Ali_Key="你的AccessKeyId"' >> ~/.bashrc
echo 'export Ali_Secret="你的AccessKeySecret"' >> ~/.bashrc
source ~/.bashrc切换 CA:使用 Let's Encrypt 替代 ZeroSSL
bash
acme.sh --set-default-ca --server letsencrypt步骤六:测试
执行下面的命令申请证书:
bash
acme.sh --issue --dns dns_ali -d zzf.net.cn -d *.zzf.net.cn如果执行命令报错,可能是还没注册账号,先执行:
bash
acme.sh --register-account -m your@email.com如果配置正确,acme.sh 会自动在阿里云 DNS 里添加 _acme-challenge.zzf.net.cn 这种 TXT 记录,并通过验证,最终生成证书。
到这一步,acme.sh 配合阿里云 DNS 自动申请 SSL 证书就可以跑通。
把证书安装到 Nginx
如果生成的证书文件不在 Nginx 配置里的路径,需要执行下面的命令,续期后才会自动同步到对应目录。Nginx 配置的路径如果直接指向 acme.sh 的证书文件,就不用做这一步。
bash
acme.sh --install-cert -d yourdomain.com \
--key-file /etc/nginx/ssl/yourdomain.key \
--fullchain-file /etc/nginx/ssl/yourdomain.cer \
--reloadcmd "systemctl reload nginx"宝塔面板用户
宝塔一般把证书放在:
bash
/www/server/panel/vhost/cert/yourdomain.com/可以这样安装:
bash
acme.sh --install-cert -d yourdomain.com \
--key-file /www/server/panel/vhost/cert/yourdomain.com/privkey.pem \
--fullchain-file /www/server/panel/vhost/cert/yourdomain.com/fullchain.pem \
--reloadcmd "bt reload"zzf.net.cn 对应的命令:
bash
acme.sh --install-cert -d zzf.net.cn \
--key-file /www/server/panel/vhost/cert/zzf.net.cn/privkey.pem \
--fullchain-file /www/server/panel/vhost/cert/zzf.net.cn/fullchain.pem \
--reloadcmd "bt reload"参考文档:acme.sh 中文说明。