域名验证
签发证书前,证书颁发机构要求证明对域名的控制权。验证方式在“域名验证”页管理,分为 DNS 验证与 HTTP 验证两类。添加证书时,界面只列出所选证书来源能够使用的验证方式。
| 方式 | 原理 | 适用情况 |
|---|---|---|
| DNS 验证 | 在域名的 DNS 中添加 TXT 记录 | 全部证书,包括通配符证书 |
| HTTP 验证 | 在 http://<域名>/.well-known/ 下提供验证文件 | 非通配符证书,且证书颁发机构能够经 HTTP 访问该域名 |
DNS 服务商
JEC 通过 lego 支持 221 家 DNS 服务商,表单字段与 lego 的环境变量一致。腾讯云 DNSPod、阿里云 DNS、Cloudflare 与华为云 DNS 支持凭据与测试连接(列出账号可管理的域名),并可添加任意类型的记录。
- 任意记录:部分证书厂商(如 Namecheap、阿里云)要求的 TXT、CNAME 记录由上述四家自动添加,并在签发完成后删除。
- CNAME 委派:使用 ACME 时,可将
_acme-challenge.<域名>永久 CNAME 到另一个由受支持服务商托管的域,验证记录随之添加在 CNAME 指向的名称上。 - 记录生效检查:JEC 直接查询域名的权威 DNS 服务器,确认记录生效后再请证书颁发机构验证。本机的解析结果有误时,可通过
JEC_DNS_RESOLVERS指定解析服务器,参见配置参考。
手动添加 DNS 记录
适用于没有 API 或不受支持的 DNS 服务商。签发日志列出每条需要添加的记录,用户在 DNS 服务商处手动添加后,JEC 查询权威 DNS,查到即继续,无需额外确认。等待时间默认 20 分钟,最长 25 分钟。每次续期都须重新添加,手动添加的记录由用户自行删除。
网站目录
| 类型 | 说明 |
|---|---|
| 网站目录 | 将验证文件写入本机(或挂载进容器的)Web 服务器网站根目录;可以全部域名共用一个目录,或每个域名一个子目录 |
| SSH 网站目录 | 经 SSH 将验证文件写入远程服务器的网站目录;连接设置与 SSH 部署目标相同,须核对主机公钥 |
验证文件仅写在 /.well-known/ 之下,验证完成后删除。
JEC 自己应答
由 JEC 直接响应 /.well-known/ 下的验证请求,无需访问网站目录。前提是网站的反向代理或 CDN 将这些域名的 /.well-known/ 请求转发至 JEC,且转发时不要求登录;Caddy 与 nginx 的配置见反向代理与 CDN。测试连接会从公网经所填的测试域名取回一个临时文件,以确认转发配置有效。
ESA 边缘应答
网站托管于阿里云 ESA 时,由 JEC 部署的边缘函数从边缘 KV 直接应答验证请求,不经过源站。首次使用时,JEC 自动创建边缘 KV 命名空间 jec_validation、边缘函数 jec-validation 以及站点上 /.well-known/ 的路由。该方式要求 ESA 套餐包含“函数和 Pages”与“边缘 KV”。
Cloudflare 边缘应答
网站经 Cloudflare 代理时(包括 Cloudflare for SaaS 的自定义主机名),由 JEC 部署的 Worker 从 Workers KV 直接应答验证请求,不经过源站,网站服务器无需任何改动。首次使用时,JEC 自动创建 Workers KV 命名空间 jec_validation、Worker jec-validation、域名 /.well-known/ 到它的路由(自定义主机名则是 SaaS 区域所有主机的 /.well-known/,没有对应文件的请求照常转给源站),以及一条排在区域最前面的自定义规则,让这些文件的请求通过区域的安全设置,否则证书颁发机构和 Namecheap 等厂商的检查可能被质询拦下。
API 令牌需要账户的 Workers 脚本、Workers KV 存储,以及区域的 Workers 路由、区域的编辑权限;添加上述规则另需区域 WAF 的编辑权限。Bot Fight Mode 无法用规则放行,区域开启了它时须关闭。网站是自定义主机名时,“区域”填写 SaaS 的区域。
插件
插件可提供新的验证方式,包括 DNS 验证(可声明支持任意记录)与 HTTP 验证,参见插件。