首页 新闻资讯 安全产品 SSL证书域名验证方式怎么选?DNS验证vs文件验证对比
SSL证书域名验证方式怎么选?DNS验证vs文件验证对比
时间 : 2026-10-16 10:08:34
编辑 : 华纳云
阅读量 : 37

  申请SSL证书的时候,CA机构不会直接把证书发给你。它要先确认一件事:你确实控制着你要申请证书的那个域名。 这个确认过程就是域名验证,DV证书和OV/EV证书都需要走这一步,区别只是OV/EV在域名验证之外还多了一道企业资质审核。

  域名验证有三种方式:DNS验证、文件验证和邮件验证。邮件验证现在用得越来越少,大部分场景下你只需要在DNS验证和文件验证之间做选择。

  这两种方式没有绝对的优劣,选哪个取决于你的服务器环境、运维习惯和自动化需求。理解它们各自的工作机制,比记住“DNS更好”或“文件更简单”的结论有用得多。

  DNS验证:在域名系统里放一张“通行证”

  DNS验证的核心逻辑是:CA给你一个特定的值,你把它作为一条TXT记录添加到域名的DNS解析中,CA查询这条记录确认存在,验证就通过了。

  具体流程是这样的。你在CA的申请页面提交域名后,CA会生成一个类似这样的值:

_acme-challenge.example.com  TXT  "a1b2c3d4e5f6g7h8i9j0..."

  你需要登录域名DNS管理后台,添加一条TXT记录:主机记录填 _acme-challenge,记录类型选TXT,记录值填CA给的那串字符。保存后等DNS生效,然后在CA页面点击“验证”。

  CA的验证服务器会向 _acme-challenge.example.com 发起一次DNS查询,查到的TXT记录值如果和它生成的一致,验证通过。

  DNS验证的关键特征:它不依赖你的Web服务器。

  验证过程只涉及DNS查询,CA不关心你的服务器是否在线、80端口是否开放、网站是否正常运行。只要DNS解析生效,验证就能完成。这意味着你可以在服务器还没有部署、或者Web服务暂时不可用的情况下,提前把证书申请下来。

  另一个重要特征是支持通配符证书。通配符证书(*.example.com)只能通过DNS验证签发。文件验证无法证明你对“所有子域名”的控制权,因为它只能在你指定的某一个子域名的Web目录下放文件。这是通配符证书必须走DNS验证的技术原因。

  DNS验证的短板在操作链条上。你需要登录DNS管理后台手动添加记录,等生效(通常几分钟到几十分钟),然后回到CA页面点击验证。如果你管理着多个域名、多个子域名,手动操作的工作量会累积。更麻烦的是续期:证书到期前需要重新验证,意味着你要重复一遍上述流程。

  这个短板有解决方案:DNS API自动化。Let‘s Encrypt的Certbot、acme.sh等工具支持通过DNS提供商的API自动添加和删除TXT记录。配置好API凭证后,证书申请和续期可以完全自动化,不需要人工介入。主流DNS服务商都提供API接口,Certbot也有对应的插件。

/uploads/images/202610/15/ed92912f-a660-4bdd-bbae-5ac0ec6f5871.png  

  文件验证:在网站目录里放一个“信物”

  文件验证的逻辑更直观:CA给你一个文件,你把它放到网站根目录下的指定路径,CA通过HTTP请求访问这个文件,能访问到就验证通过。

  CA会给你一个类似这样的文件:

文件名:a1b2c3d4e5f6.txt
文件内容:a1b2c3d4e5f6g7h8i9j0...
存放路径:http://example.com/.well-known/pki-validation/a1b2c3d4e5f6.txt

  你需要通过FTP、SFTP或者服务器命令行,把这个文件放到网站根目录的 .well-known/pki-validation/ 目录下。确保通过浏览器访问这个URL能看到文件内容,然后在CA页面点击验证。CA的验证服务器会发起HTTP请求去读取这个文件,内容匹配就通过。

  文件验证的优势在于操作简单、即时生效。 你不需要等DNS传播,文件放上去、路径能访问,验证就能立刻完成。对于不熟悉DNS管理后台、或者DNS管理权限不在自己手里的场景,文件验证是更直接的选择。

  但它有几个明确的限制。

  第一,依赖Web服务器。 验证要求通过HTTP访问到文件,这意味着你的服务器必须在线、80端口(或443端口)必须开放、Web服务必须正常运行。如果服务器正在迁移、防火墙配置有误、或者Web服务挂了,文件验证就无法完成。

  第二,不支持通配符证书。 这是技术限制,前面已经解释过。如果你需要通配符证书,文件验证这条路走不通。

  第三,多域名和续期的操作成本。 如果你申请的是多域名证书(SAN证书),每个域名都需要单独放置验证文件。续期时,如果服务器环境发生了变化(比如网站目录结构改了、Web服务器换了),旧的验证文件路径可能失效,需要重新配置。

  怎么选:看你的场景和约束

  选择逻辑可以归结为几个判断。

  需要通配符证书吗? 需要的话,DNS验证是唯一选择。文件验证不支持通配符。

  DNS管理权限在谁手里? 如果域名是在你控制的DNS服务商那里(比如你自己注册的域名、你自己管理的Cloudflare账户),DNS验证的配置权限在你手上,选DNS验证没有障碍。如果域名是客户提供的、DNS管理权限在客户的技术团队手里,文件验证可能更省事——你只需要把文件放到服务器上,不需要向客户要DNS后台的登录权限。

  你的服务器环境稳定吗? 如果服务器正在搭建中、Web服务还没配好、或者你打算在服务器上线之前就把证书准备好,DNS验证更合适。它不依赖Web服务器。如果你的服务器已经稳定运行,网站正常访问,文件验证可以立即完成。

  你打算自动化续期吗? 如果你用Certbot、acme.sh这类工具,两者都支持自动化。DNS验证的自动化需要配置DNS API凭证,文件验证的自动化需要Web服务器对 .well-known 路径有写入权限。从安全角度看,DNS API凭证是高权限凭证(能改DNS解析),放在服务器上需要额外的保护措施。文件验证的自动化对服务器权限的要求相对低一些,只需要能写入网站目录。

  你管理多少个域名? 一两个域名,手动操作哪种方式都行。几十个域名、频繁签发和续期,DNS API自动化是更可持续的方案。文件验证在多域名场景下的手动操作成本会迅速累积。

  一个容易被忽略的细节:验证文件的安全

  文件验证的验证文件本身不包含敏感信息——它只是CA生成的一串随机字符。但这个文件的存在暴露了一个信息:你正在为这个域名申请证书。如果攻击者能读取到这个文件,他知道了你正在申请证书,但这对攻击没有直接帮助。

  真正需要注意的是验证文件不要留在服务器上。验证通过后,建议把 .well-known/pki-validation/ 目录下的验证文件删除。虽然它不包含私钥,但保留一个暴露申请状态的入口没有实际收益。

  DNS验证的TXT记录在验证通过后可以删除,也可以保留。保留的好处是续期时如果CA复用同一个验证值,你不需要重新配置。但大多数CA每次签发都会生成新的验证值,所以保留旧记录的意义有限。

相关内容
客服咨询
7*24小时技术支持
技术支持
渠道支持