可以在带有 Cloudflare 域名服务器的 Vercel 项目上使用通配符域,只要按照以下步骤操作,就可以“忽略”错误消息。
1. 将您的通配符域添加到您的项目中
首先,将 *.example.com
添加到项目中(Project Settings
-> Domains
)。 在此阶段,您将在 UI 上看到 Invalid Configuration
错误消息,指示您将其名称服务器更改为我们的。
请忽略这个,没关系的。
2. 通过 Vercel CLI 颁发通配符 TLS 证书
这是最关键的一步。 由于 Vercel 使用 Let's Encrypt 证书,因此有两种方法可以验证您的域名所有权:
https://letsencrypt.org/docs/challenge-types/
因为这是一个“通配符”证书,您只能通过上述文档中提到的 DNS-01 质询进行验证。 这就是为什么我们最初说有必要更改名称服务器,以便我们可以自动处理我们这边的 DNS-01 挑战,而无需您手动创建验证 TXT DNS 记录。 但这不是硬性要求。 您仍然可以使用 Vercel CLI 手动执行此 DNS-01 质询:
https://vercel.com/docs/cli/certs#challenge-only
先安装 Vercel CLI
:pnpm i -g vercel
或在这里 查看。
$ vercel certs issue "*.example.com" --challenge-only
Vercel CLI 28.12.6
> A certificate issuance for *.example.com has been started [2s]
Add the following TXT records with your registrar to be able to the solve the DNS challenge:
name type value
_acme-challenge TXT YN7LvYccJ0Xlrih9lIb--gcgH8OzlsD4POWf15XtrDc
> To issue the certificate once the records are added, run:
`vercel certs issue *.example.com`
Read more: https://err.sh/vercel/solve-challenges-manually
$ vercel certs issue "*.example.com"
Vercel CLI 28.12.6
> Success! Certificate entry for *.example.com created [6s]
上面示例输出。 然后,您可以使用提供的值通过 Cloudflare DNS 界面创建新的 TXT 记录。
[重要的提示]
因为 Let's Encrypt 证书有 90 天的有效期,您将需要一个新的验证挑战签名来自动续订证书,您必须按照相同的步骤重新颁发证书并使用之前的新验证签名更新 TXT 记录 证书过期。 有关更多详细信息,请参阅下面我的后续评论。
3. 在 Cloudflare 中创建通配符 DNS 条目
完成第 2 步后,您可以通过 Cloudflare DNS 界面添加一个新的通配符 DNS 条目,并将其指向我们共享的 CNAME
主机名 cname.vercel-dns.com
。 所以它看起来像这样:
4.(可选)禁用警告通知(UI 的收件箱通知/电子邮件)
请注意,由于 Vercel 现在检查域名服务器的方式,即使您的设置完全正确,Invalid Configuration
错误消息仍将继续出现。
在围绕此名称服务器检查拥有更好的 UI/UX 之前,您可以通过 https://vercel.com/account/notifications 禁用警告通知,这样 Vercel 就不会打扰您。
Web
->Domains
->Configuration
Email
->Domains
->Configuration
你也可以重新自定义域名,比如 demo.example.com
,以消除这个错误提示。