编辑
2026-03-23
运维手册
00

目录

blog.lazyyoun.xyz HTTPS 证书申请完整指南
🎯 一、环境信息
🔧 二、安装 Certbot
2.1 安装命令
2.2 验证安装
📝 三、申请证书流程
3.1 执行申请命令
3.2 获取 TXT 记录值
3.3 配置 DNS TXT 记录
登录阿里云 DNS 控制台
添加 TXT 记录
3.4 等待 DNS 生效
验证 DNS 是否生效
3.5 按回车继续验证
🔐 四、配置 Nginx 使用证书
4.1 创建 Nginx 配置文件
4.2 测试并重载
4.3 验证 HTTPS
⚠️ 五、常见问题与解决方案
5.1 问题:Incorrect TXT record
5.2 问题:证书每次都生成新值
5.3 问题:DNS 一直不生效
🔄 六、证书续期
6.1 证书有效期
6.2 手动续期
6.3 设置续期提醒
6.4 自动续期(可选)
📊 七、验证工具
7.1 DNS 验证
7.2 SSL 验证
7.3 命令行验证
📚 八、参考资料
🎯 九、快速命令汇总
✅ 十、申请成功检查清单

title: blog.lazyyoun.xyz HTTPS 证书申请完整指南 date: 2026-03-23 tags: [HTTPS, SSL, Certbot, Nginx] category: 运维手册

blog.lazyyoun.xyz HTTPS 证书申请完整指南

📋 本文记录:使用 Certbot 为 blog.lazyyoun.xyz 申请 Let's Encrypt 免费 HTTPS 证书的完整流程和注意事项。


🎯 一、环境信息

项目
服务器xx.xx.xx.xx (阿里云)
系统Alibaba Cloud Linux 3
域名blog.lazyyoun.xyz
Web 服务器Nginx 1.20.1
证书类型Let's Encrypt (90 天有效期)
验证方式DNS TXT 记录验证

🔧 二、安装 Certbot

2.1 安装命令

bash
# 阿里云 Linux 3 / CentOS yum install -y epel-release yum install -y certbot python3-certbot-nginx

2.2 验证安装

bash
certbot --version # 输出:certbot 2.x.x

📝 三、申请证书流程

3.1 执行申请命令

bash
certbot certonly -d blog.lazyyoun.xyz --manual --preferred-challenges dns --agree-tos --email admin@lazyyoun.xyz

参数说明

  • certonly - 只申请证书,不自动配置
  • -d - 指定域名
  • --manual - 手动模式(需要手动配置 DNS)
  • --preferred-challenges dns - 使用 DNS 验证
  • --agree-tos - 同意服务条款
  • --email - 接收续期通知的邮箱

3.2 获取 TXT 记录值

执行命令后会输出:

Please deploy a DNS TXT record under the name: _acme-challenge.blog.lazyyoun.xyz. with the following value: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Before continuing, verify the TXT record has been deployed.

记下这个 TXT 记录值,下一步要用。

3.3 配置 DNS TXT 记录

登录阿里云 DNS 控制台

  1. 访问 https://dns.console.aliyun.com/
  2. 找到 lazyyoun.xyz 域名
  3. 点击"添加记录"

添加 TXT 记录

字段
主机记录_acme-challenge.blog
记录类型TXT
记录值(certbot 输出的值)
TTL10 分钟(默认)

⚠️ 重要提示

  • 如果有旧的 _acme-challenge.blog 记录,请先删除
  • 只保留最新的 TXT 记录值
  • 每次 certbot 重新启动都会生成新值

3.4 等待 DNS 生效

DNS 传播需要时间,通常 1-5 分钟

验证 DNS 是否生效

方法 1:Google Admin Toolbox

https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.blog.lazyyoun.xyz

方法 2:命令行

bash
dig +short TXT _acme-challenge.blog.lazyyoun.xyz @8.8.8.8

方法 3:nslookup

bash
nslookup -qt=TXT _acme-challenge.blog.lazyyoun.xyz 8.8.8.8

看到正确的 TXT 记录值后,继续下一步。

3.5 按回车继续验证

在 certbot 终端中按回车键,继续验证流程。

成功输出

Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/blog.lazyyoun.xyz/fullchain.pem Key is saved at: /etc/letsencrypt/live/blog.lazyyoun.xyz/privkey.pem This certificate expires on 2026-06-20.

🔐 四、配置 Nginx 使用证书

4.1 创建 Nginx 配置文件

bash
cat > /etc/nginx/conf.d/blog.conf << 'NGINX_CONF' server { listen 443 ssl; server_name blog.lazyyoun.xyz; # 证书路径 ssl_certificate /etc/letsencrypt/live/blog.lazyyoun.xyz/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/blog.lazyyoun.xyz/privkey.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; client_max_body_size 10M; # 网站配置 location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering off; } } server { listen 80; server_name blog.lazyyoun.xyz; return 301 https://$host$request_uri; } NGINX_CONF

4.2 测试并重载

bash
# 测试配置 nginx -t # 重载 Nginx nginx -s reload

4.3 验证 HTTPS

bash
# 测试访问 curl -I https://blog.lazyyoun.xyz # 应该返回 HTTP/1.1 200 OK

⚠️ 五、常见问题与解决方案

5.1 问题:Incorrect TXT record

错误信息

Detail: Incorrect TXT record "XXX" found at _acme-challenge.blog.lazyyoun.xyz

原因

  • DNS 记录值不匹配
  • 有多个 TXT 记录
  • DNS 还未完全生效

解决方案

  1. 删除所有旧的 _acme-challenge.blog TXT 记录
  2. 添加最新的 TXT 记录值
  3. 等待 3-5 分钟再验证
  4. 如果多次失败,重新启动 certbot 获取新值

5.2 问题:证书每次都生成新值

原因: 每次重新启动 certbot 都会生成新的 TXT 记录值。

正确做法

  1. 执行 certbot 命令
  2. 记下 TXT 记录值
  3. 配置 DNS
  4. 等待 DNS 生效
  5. 在同一个 certbot 进程中按回车(不要重新启动)

如果 certbot 已退出

bash
# 重新启动 certbot,会生成新值 certbot certonly -d blog.lazyyoun.xyz --manual --preferred-challenges dns # 使用新的 TXT 记录值

5.3 问题:DNS 一直不生效

可能原因

  • TTL 时间未到
  • DNS 缓存
  • 记录配置错误

解决方案

  1. 检查主机记录是否正确(_acme-challenge.blog
  2. 检查记录类型是否为 TXT
  3. 检查记录值是否完整复制(包括所有字符)
  4. 等待更长时间(最多 30 分钟)
  5. 尝试使用 @8.8.8.8 查询,避免本地 DNS 缓存

🔄 六、证书续期

6.1 证书有效期

Let's Encrypt 证书有效期:90 天

6.2 手动续期

bash
# 续期命令(与申请相同) certbot certonly -d blog.lazyyoun.xyz --manual --preferred-challenges dns # 续期后重载 Nginx nginx -s reload

6.3 设置续期提醒

建议

  • 在证书到期前 30 天 设置提醒
  • 可以使用日历提醒或 cron 任务

查看证书到期时间

bash
openssl x509 -in /etc/letsencrypt/live/blog.lazyyoun.xyz/fullchain.pem -noout -dates

6.4 自动续期(可选)

使用阿里云 DNS API 实现自动续期:

bash
# 安装插件 pip3 install certbot-dns-aliyun # 配置 API Key cat > /root/.aliyun-credentials.ini << EOF [default] access_key_id = YOUR_ACCESS_KEY_ID access_key_secret = YOUR_ACCESS_KEY_SECRET EOF # 自动续期 certbot certonly -d blog.lazyyoun.xyz \ --dns-aliyun \ --dns-aliyun-credentials /root/.aliyun-credentials.ini # 配置定时任务(每天凌晨 2 点检查) crontab -e # 添加:0 2 * * * certbot renew --deploy-hook "nginx -s reload"

📊 七、验证工具

7.1 DNS 验证

7.2 SSL 验证

7.3 命令行验证

bash
# 检查证书信息 openssl x509 -in /etc/letsencrypt/live/blog.lazyyoun.xyz/fullchain.pem -noout -text # 检查证书有效期 openssl x509 -in /etc/letsencrypt/live/blog.lazyyoun.xyz/fullchain.pem -noout -dates # 测试 HTTPS 连接 curl -I https://blog.lazyyoun.xyz

📚 八、参考资料


🎯 九、快速命令汇总

bash
# 1. 安装 certbot yum install -y certbot python3-certbot-nginx # 2. 申请证书 certbot certonly -d blog.lazyyoun.xyz --manual --preferred-challenges dns # 3. 验证 DNS dig +short TXT _acme-challenge.blog.lazyyoun.xyz @8.8.8.8 # 4. 测试 Nginx 配置 nginx -t # 5. 重载 Nginx nginx -s reload # 6. 查看证书有效期 openssl x509 -in /etc/letsencrypt/live/blog.lazyyoun.xyz/fullchain.pem -noout -dates # 7. 续期证书 certbot certonly -d blog.lazyyoun.xyz --manual --preferred-challenges dns nginx -s reload

✅ 十、申请成功检查清单

  • Certbot 已安装
  • 执行 certbot 命令获取 TXT 值
  • 在阿里云 DNS 添加 TXT 记录
  • 等待 DNS 生效(1-5 分钟)
  • 验证 DNS 记录(使用 dig 或 Google Toolbox)
  • 在 certbot 中按回车继续
  • 证书成功生成(查看输出信息)
  • 配置 Nginx 使用证书
  • 测试 Nginx 配置 (nginx -t)
  • 重载 Nginx (nginx -s reload)
  • 验证 HTTPS 访问 (curl -I https://blog.lazyyoun.xyz)
  • 设置续期提醒(到期前 30 天)

本文档基于 2026-03-23 实际申请流程整理 博客地址:https://blog.lazyyoun.xyz

本文作者:lazyyoun

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!