使用 Certbot 在腾讯云生成 Let’s Encrypt 通配符证书完整教程

本文详细记录了在腾讯云环境下,通过 Certbot 获取和续期 Let's Encrypt 通配符证书的完整流程,包括 DNS API 配置、通配符证书申请、常见错误及解决方案。


1️⃣ 安装 Certbot

在 Ubuntu 系统中,推荐使用官方 PPA:

bash 复制代码
sudo apt update
sudo apt install certbot python3-certbot-dns-tencentcloud -y
  • certbot:核心工具
  • python3-certbot-dns-tencentcloud:用于通过腾讯云 DNS API 获取通配符证书

确认安装成功:

bash 复制代码
certbot --version

2️⃣ 配置腾讯云 DNS API 凭证

  1. 在腾讯云控制台创建 API 密钥

  2. 在服务器上创建凭证文件:

bash 复制代码
mkdir -p /root/.secrets/certbot
vim /root/.secrets/certbot/tencentcloud.ini

内容示例:

ini 复制代码
# 腾讯云 API 凭证
dns_tencentcloud_secret_id = YOUR_SECRET_ID
dns_tencentcloud_secret_key = YOUR_SECRET_KEY

修改权限,防止其他用户读取:

bash 复制代码
chmod 600 /root/.secrets/certbot/tencentcloud.ini

3️⃣ 申请通配符证书

使用 TencentCloud DNS 插件申请证书:

bash 复制代码
certbot certonly \
  --dns-tencentcloud-credentials /root/.secrets/certbot/tencentcloud.ini \
  --dns-tencentcloud-propagation-seconds 60 \
  -d xunhuawenyou.cn \
  -d "*.xunhuawenyou.cn"

操作说明:

  • certonly:只获取证书,不自动配置 Nginx
  • --dns-tencentcloud-credentials:API 凭证文件路径
  • --dns-tencentcloud-propagation-seconds:DNS 记录生效等待时间
  • -d:指定域名,可包含通配符

⚠️ 常见交互

  1. 如果已有 RSA 证书,会提示是否升级为 ECDSA:

    Update key type/(K)eep existing key type: U

选择 U

  1. 如果已有证书部分域名相同,会提示是否扩展证书:

    Do you want to expand and replace this existing certificate? (E)xpand/(C)ancel: E

选择 E 扩展。


4️⃣ 常见问题及解决方案

4.1 DNS API 授权失败

报错示例:

复制代码
Error communicating with the DNSPOD API: http error status: 401

原因:

  • API 密钥错误
  • 使用了错误的 DNS 产品(腾讯云 DNS vs DNSPod)

解决方法:

  • 确认凭证文件内容正确
  • 确认域名在腾讯云 DNS 上托管
  • 文件权限为 600

4.2 Nginx 配置导致续期失败

报错示例:

复制代码
nginx: [emerg] open() "/var/log/nginx/xunhuawenyou.cn/access.log" failed (2: No such file or directory)

解决方法:

  • 确认 Nginx 配置文件正确
  • 确保日志路径存在或切换 DNS 验证方式

5️⃣ 检查证书与文件路径

证书生成成功后路径:

复制代码
证书文件:/etc/letsencrypt/live/xunhuawenyou.cn/fullchain.pem
私钥文件:/etc/letsencrypt/live/xunhuawenyou.cn/privkey.pem
证书有效期:至 2026-04-30

注意:使用通配符证书必须 DNS 验证。


6️⃣ 自动续期

Certbot 默认安装后会创建 systemd timer 自动续期。

检查定时任务:

bash 复制代码
systemctl list-timers | grep certbot

手动测试续期:

bash 复制代码
sudo certbot renew --dry-run

输出示例:

复制代码
Simulating renewal of an existing certificate for xunhuawenyou.cn and *.xunhuawenyou.cn
Congratulations, all simulated renewals succeeded

⚠️ 注意事项:

  • 如果不再使用的域名可以删除对应的 renewal 配置:
bash 复制代码
sudo rm /etc/letsencrypt/renewal/huaxianguan.com.conf
  • 确保 DNS API 密钥有效,续期才会成功

7️⃣ 总结

  • 在腾讯云使用 Certbot 获取通配符证书必须使用 DNS API 插件
  • 生成证书前需创建凭证文件,并设置 600 权限
  • 成功申请后,系统会自动创建定时任务续期
  • 定期用 --dry-run 检查续期情况
  • 不再使用的域名可以删除对应的 renewal 文件,避免续期错误
相关推荐
Front_Yue7 小时前
Spring Boot 实战:腾讯云 COS 高级特性——断点续传与进度监控
spring boot·腾讯云·腾讯云cos
2401_865854881 天前
腾讯云新出的Clawdbot怎么样
云计算·腾讯云
G31135422732 天前
IM即时通讯实现原理
腾讯云
咕噜企业分发小米4 天前
腾讯云IM如何与第三方实时音频服务集成?
云计算·音视频·腾讯云
咕噜企业分发小米4 天前
腾讯云IM与TRTC集成时,如何优化用户体验?
云计算·腾讯云
咕噜企业分发小米4 天前
腾讯云IM的优点
云计算·腾讯云
咕噜企业分发小米4 天前
腾讯云im实时音频
云计算·音视频·腾讯云
马猴烧酒.5 天前
JAVA后端对象存储( 图片分享平台)详解
java·开发语言·spring·腾讯云
咕噜企业分发小米7 天前
腾讯云在多云管理工具上如何实现合规性要求?
java·云计算·腾讯云