宝塔面板 + 阿里云 DNS 实现 Let’s Encrypt 证书自动续签(详细图文教程)

在现代网站运营中,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. 新建网站

  1. 登录宝塔控制面板

  2. 菜单栏选择 网站 → 添加站点

  3. 填写主域名:

    复制代码
    example.com
  4. 默认目录与端口保持即可

  5. 点击 提交

此时你已经在宝塔管理了你的网站。


2. 进入 SSL 配置

  1. 在宝塔面板左侧点击 网站

  2. 找到 example.com 这行

  3. 点击 设置

  4. 再点击 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(访问控制)

  1. 控制台左侧搜索框输入:

    复制代码
    RAM
  2. 进入 访问控制 → 用户


3. 创建 RAM 用户

点击 创建用户

在对话框中:

  • 用户名:例如

    复制代码
    bt-dns-cert
  • 选择 系统生成密码或无密码

  • 点击 确定

此时你已创建一个新的 RAM 用户。


4. 添加权限策略

在新创建的用户详情页:

点击 权限管理 → 添加权限

选择:

复制代码
AliyunDNSFullAccess

该策略允许该用户操作 DNS 相关接口;如果安全要求高,也可以自定义权限策略,仅包含 DNS API 权限。


5. 创建 AccessKey

在该 RAM 用户详情页:

  1. 点击 AccessKey 管理

  2. 点击 创建 AccessKey

  3. 出现选择场景界面,选择:

    复制代码
    其他
  4. 勾选确认框

  5. 点击 继续创建

⚠️ 系统会生成:

复制代码
AccessKey ID
AccessKey Secret

注意:

  • Secret 仅显示一次

  • 一定要保存(复制/下载 CSV)

截图你可以参考:

(你之前上传的截图显示了生成 AccessKey 的界面)


五、回到宝塔填写 DNS API 信息

这部分是将阿里云的 API 密钥输入回宝塔。


1. 再次打开 DNS 接口设置

  1. 在宝塔的 DNS 接口设置 界面

  2. 点击 刚加的 DNS 接口

  3. 输入:

    验证类型:AliyunDns
    ID:AccessKey ID
    Token:AccessKey Secret
    备注:可填 Alicloud DNS 自动续签

  4. 点击 确定


2. 绑定域名使用这个 DNS 接口

在申请证书页面:

  1. 勾选域名:

    • example.com

    • *.example.com

  2. 确保这两个域名均被选中

  3. 确认右侧的 DNS 接口是刚配置的阿里云接口


六、申请 Let's Encrypt 证书

所有 DNS 接口和域名都配置完成后:

  1. 在证书申请页面

  2. 点击 申请证书

此时宝塔会:

  • 通过阿里云 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 泄露:

  1. 立即登录阿里云控制台

  2. 禁用或删除该 AccessKey

  3. 重新创建新的 AccessKey

  4. 回到宝塔重新填写新的值


Q3. 为什么宝塔续签失败?

常见原因:

  • AccessKey 权限不足

  • DNS API 调用次数被限额

  • DNS 解析尚未生效

  • 阿里云 DNS 解析设置错误


九、完整流程图(逻辑关系)

复制代码
宝塔请求续签 → 检查证书到期日
                     ↓
           调用 DNS API 添加 TXT 记录
                     ↓
             Let's Encrypt 验证成功
                     ↓
     证书重新签发并自动部署到网站

十、完整操作要点总结

步骤 是否必须
DNS-01 验证
阿里云 DNS API 配置
RAM 用户 + 权限
AccessKey 填写到宝塔
自动续签检测 宝塔 自动完成

十一、结语

通过本教程,你已经学会:

  • 配置宝塔自动续签 Let's Encrypt 证书

  • 使用阿里云 DNS API 自动添加验证解析

  • 对泛域名证书进行全自动证书生命周期管理

这是一个值得在生产环境推广的自动化证书管理方案,可以帮助你节省运维成本与人工错误。

相关推荐
翼龙云_cloud20 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
AKAMAI1 天前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·测试
齐 飞1 天前
使用阿里云的MaxCompute查询sql时报错:DruidPooledPreparedStatement: getMaxFieldSize error
sql·阿里云·odps
China_Yanhy1 天前
AWS EKS三种类别,如何选择
云计算·aws
xybDIY1 天前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws
倪某某1 天前
阿里云无影GPU部署WAN2.2模型
阿里云·云计算
阿里云通信1 天前
WhatsApp 账号被封怎么办?日常“养号”、防封、解封实践
阿里云·whatsapp·whatsapp 封号
倪某某1 天前
阿里云ECS GPU部署WAN2.2
人工智能·阿里云·云计算
风吹落叶花飘荡1 天前
将mysql数据库的内容备份至阿里云 oss归档存储
数据库·mysql·阿里云