Administrator
发布于 2026-10-05 / 0 阅读
0
0

DNS‑01 和 HTTP‑01,是Let’s‑Encrypt证书的两种域名身份验证方式

DNS‑01 和 HTTP‑01,是Let’s‑Encrypt证书的两种域名身份验证方式

目的:证书机构要确认这个域名确实属于你本人,才发给你HTTPS证书。

🔹DNS‑01(DNS验证)

原理:在Cloudflare的DNS里面增加一条特殊的TXT记录。证书服务商读取这条TXT记录,证明域名归你。

流程:

  1. acme‑sh程序 →调用Cloudflare API,自动往你的域名添加一条TXT解析记录(一串乱码文字)
  2. Let’s‑Encrypt服务器查询域名的DNS,读到这条TXT
  3. ✅确认域名是你的 →下发证书;然后acme‑sh自动删掉临时TXT记录

优点:

  • ✅不需要服务器80端口必须开放;就算80被防火墙拦截也可以申请证书
  • ✅可以给通配符证书(*.xxx.top)申请

缺点:

  • 需要Cloudflare的API令牌,程序有权修改你的DNS;还要邮箱验证,配置麻烦(就是你现在遇到的问题)

🔹HTTP‑01(HTTP网页验证,推荐你现在用)

原理:在你的VPS网站目录里面放一个临时小文本文件;证书服务器通过http访问你的网站读取这个文件。证明域名属于你。

流程:

  1. acme‑sh在你服务器 /var/www/html/.well‑known/acme‑challenge/下放一个随机文本小文件
  2. Let’s‑Encrypt 通过**http://域名/.well‑known/acme‑challenge/xxx**访问读取文件
  3. ✅验证成功下发证书,程序再删除临时文件

优点:

  • ✅不需要Cloudflare任何API、不需要token! 不用操作DNS,简单。
    缺点:
  • 📌VPS服务器80端口必须对外开放可以访问(你Nginx正好开放了80,符合条件)
  • ❌不能申请通配符证书*.myfamily2027.top,只能指定明确子域名(blog、stockapi,刚好你的场景够用)

📋对比简表

项目DNS‑01HTTP‑01(选这个)
需要Cloudflare API令牌✅ 需要❌不需要
依赖服务器80端口不依赖✅必须开放80端口
可以申请通配符*证书✅可以❌不可以
适合你的情况麻烦,邮箱验证问题✅正好,blog、stockapi两个子域名

你的现状:域名是blog.myfamily2027.top和stockapi.myfamily2027.top,不需要通配符,http‑01完全够用,避开cloudflare账号验证的坑。

一个重要注意

Cloudflare是橙色代理的时候,http‑01依然可以正常工作!
但是不能把80端口设置为“始终HTTPS(Always Use HTTPS)”,证书申请阶段http请求必须允许到达VPS。申请完证书之后,再打开Always‑Use‑HTTPS。

如果你需要,我可以直接给完整的nginx80配置代码。


评论