在现代网站运营中,HTTPS 已经成为基础设施的必备项。Let's Encrypt 提供了免费的 SSL/TLS 证书,但其有效期只有 90 天,这意味着如果手动续签,操作繁琐且容易遗忘。
通过本教程,你将学会如何结合 宝塔面板(BT Panel) 和 阿里云 DNS API ,实现 Let's Encrypt 证书的 自动申请与自动续签 ,并且支持 泛域名证书 (*.example.com)。
一、方案概览
本文将涵盖以下内容:
-
在宝塔面板创建网站并开启 SSL
-
配置 DNS API 自动添加 TXT 解析记录
-
在阿里云获取 AccessKey 并授予 DNS 权限
-
将 AccessKey 配置到宝塔
-
自动申请 Let's Encrypt 证书并自动续签
使用到的核心技术:
-
DNS-01 验证(必需)
-
阿里云 DNS API
-
宝塔的 DNS 自动化支持
二、准备条件
| 条件 | 说明 |
|---|---|
| 宝塔面板 | 已安装最新版 |
| 已备案域名 | 例如 example.com |
| 阿里云账号 | 有阿里云账号并能登录控制台 |
| 阿里云 DNS 已托管域名 | 域名解析在阿里云 DNS |
三、宝塔侧操作
这部分重点是配置宝塔,让它能够自动调用 DNS API 进行解析验证。
1. 新建网站
-
登录宝塔控制面板
-
菜单栏选择 网站 → 添加站点
-
填写主域名:
example.com -
默认目录与端口保持即可
-
点击 提交
此时你已经在宝塔管理了你的网站。
2. 进入 SSL 配置
-
在宝塔面板左侧点击 网站
-
找到
example.com这行 -
点击 设置
-
再点击 SSL
3. 选择 Let's Encrypt 并启用 DNS 验证
在 SSL 页面中:
-
点击顶部的 Let's Encrypt
-
验证方式选择:
DNS 验证(支持通配符) -
文件验证不可用于泛域名证书
点击 配置 DNS 接口
📌 截图参考:
(你之前上传的截图显示了 Let's Encrypt 和 DNS 验证部分)
4. 进入 DNS 接口设置
在弹出的对话框中:
-
点击 DNS 接口设置
-
点击 添加 DNS 接口
如图:
(你之前上传的截图显示了 "添加 DNS 接口" 按钮)
5. 添加 DNS 接口
添加 DNS 接口时:
-
验证类型选择:
AliyunDns -
ID:填阿里云 AccessKey ID
-
Token:填阿里云 AccessKey Secret
-
备注可自定义
保存即可。
⚠️ 当前这里暂时还没配置 AccessKey 内容,所以留空稍后填写。
四、阿里云获取 AccessKey
这部分是在阿里云控制台完成。
1. 登录阿里云控制台
打开阿里云控制台,登录你的账号。
2. 进入 RAM(访问控制)
-
控制台左侧搜索框输入:
RAM -
进入 访问控制 → 用户
3. 创建 RAM 用户
点击 创建用户
在对话框中:
-
用户名:例如
bt-dns-cert -
选择 系统生成密码或无密码
-
点击 确定
此时你已创建一个新的 RAM 用户。
4. 添加权限策略
在新创建的用户详情页:
点击 权限管理 → 添加权限
选择:
AliyunDNSFullAccess
该策略允许该用户操作 DNS 相关接口;如果安全要求高,也可以自定义权限策略,仅包含 DNS API 权限。
5. 创建 AccessKey
在该 RAM 用户详情页:
-
点击 AccessKey 管理
-
点击 创建 AccessKey
-
出现选择场景界面,选择:
其他 -
勾选确认框
-
点击 继续创建
⚠️ 系统会生成:
AccessKey ID
AccessKey Secret
注意:
-
Secret 仅显示一次
-
一定要保存(复制/下载 CSV)
截图你可以参考:
(你之前上传的截图显示了生成 AccessKey 的界面)
五、回到宝塔填写 DNS API 信息
这部分是将阿里云的 API 密钥输入回宝塔。
1. 再次打开 DNS 接口设置
-
在宝塔的 DNS 接口设置 界面
-
点击 刚加的 DNS 接口
-
输入:
验证类型:AliyunDns
ID:AccessKey ID
Token:AccessKey Secret
备注:可填 Alicloud DNS 自动续签 -
点击 确定
2. 绑定域名使用这个 DNS 接口
在申请证书页面:
-
勾选域名:
-
example.com -
*.example.com
-
-
确保这两个域名均被选中
-
确认右侧的 DNS 接口是刚配置的阿里云接口
六、申请 Let's Encrypt 证书
所有 DNS 接口和域名都配置完成后:
-
在证书申请页面
-
点击 申请证书
此时宝塔会:
-
通过阿里云 DNS API 自动添加
_acme-challenge.example.com的 TXT 记录 -
Let's Encrypt 完成 DNS 验证
-
自动签发证书
-
自动部署到网站
成功后可以看到证书有效期及自动续签设置。
七、证书自动续签机制(解释)
宝塔后台运行一个定时任务:
-
每天检测证书有效期
-
当证书还有大约 30 天到期时:
-
再次调用 DNS API 执行验证
-
自动续签新证书
-
自动部署覆盖旧证书
-
-
如果验证失败、DNS API 错误、AccessKey 权限问题都会视为续签失败
因此确保:
-
AccessKey 未禁用
-
阿里云 DNS 已绑定域名
-
宝塔面板可以访问阿里云 API(网络没有防火墙阻断)
八、常见问题详解
Q1. 为什么必须选择 DNS 验证?
Let's Encrypt 的 DNS-01 验证适用于:
-
泛域名证书(
*.example.com) -
自动化
-
不需要暴露文件验证路径
HTTP / 文件验证对泛域名无效。
Q2. AccessKey 泄露怎么办?
如果 AccessKey 泄露:
-
立即登录阿里云控制台
-
禁用或删除该 AccessKey
-
重新创建新的 AccessKey
-
回到宝塔重新填写新的值
Q3. 为什么宝塔续签失败?
常见原因:
-
AccessKey 权限不足
-
DNS API 调用次数被限额
-
DNS 解析尚未生效
-
阿里云 DNS 解析设置错误
九、完整流程图(逻辑关系)
宝塔请求续签 → 检查证书到期日
↓
调用 DNS API 添加 TXT 记录
↓
Let's Encrypt 验证成功
↓
证书重新签发并自动部署到网站
十、完整操作要点总结
| 步骤 | 是否必须 |
|---|---|
| DNS-01 验证 | 是 |
| 阿里云 DNS API 配置 | 是 |
| RAM 用户 + 权限 | 是 |
| AccessKey 填写到宝塔 | 是 |
| 自动续签检测 | 宝塔 自动完成 |
十一、结语
通过本教程,你已经学会:
-
配置宝塔自动续签 Let's Encrypt 证书
-
使用阿里云 DNS API 自动添加验证解析
-
对泛域名证书进行全自动证书生命周期管理
这是一个值得在生产环境推广的自动化证书管理方案,可以帮助你节省运维成本与人工错误。