本页说明如何在 Cloudflare 上启用多方签名 DNSSEC,使用 RFC 8901 ↗ 中描述的模型 2。
请注意:
- 此过程要求你的其他 DNS 提供商也支持多方签名 DNSSEC。
- 虽然部分步骤可通过仪表板完成,但目前整个过程只能通过 API 完成。
- 在 DNS Settings(DNS 设置) ↗ 页面启用 DNSSEC 与 Multi-signer DNSSEC(多方签名 DNSSEC) 仅替代 1. 设置 Cloudflare zone 中的第一步。你仍需按照本教程的其余部分完成设置。
若你将 Cloudflare 用作主 DNS 提供商(即在 Cloudflare 中管理 DNS 记录),请执行以下操作:
-
在 Cloudflare 仪表板中,转到 DNS Settings(DNS 设置) 页面。
Go to Settings ↗ -
选择 Enable DNSSEC(启用 DNSSEC),然后选择 Confirm(确认)。
- 同时启用 Multi-signer DNSSEC(多方签名 DNSSEC) 与 Multi-provider DNS(多提供商 DNS)。
- 转到 DNS Records(DNS 记录) ↗ 页面,并在 zone apex(记录 Name(名称) 字段应使用
@)创建以下记录:
- 使用 Edit DNSSEC Status 端点 为你的 zone 启用 DNSSEC 并激活多方签名 DNSSEC。将
status设为active,将dnssec_multi_signer设为true,如下例所示。
Required API token permissions
At least one of the following token permissions is required:DNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dnssec" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"status": "active",
"dnssec_multi_signer": true
}'- 通过在 zone 上创建 DNSKEY 记录,将外部提供商的 ZSK 添加到 Cloudflare。
Required API token permissions
At least one of the following token permissions is required:DNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"type": "DNSKEY",
"name": "<ZONE_NAME>",
"data": {
"flags": 256,
"protocol": 3,
"algorithm": 13,
"public_key": "<PUBLIC_KEY>"
},
"ttl": 3600
}'- 将外部提供商的名称服务器作为 NS 记录添加到你的 zone apex。
Required API token permissions
At least one of the following token permissions is required:DNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"type": "NS",
"name": "<ZONE_NAME>",
"content": "<NS_DOMAIN>",
"ttl": 86400
}'- 使用以下 API 请求,启用上一步中添加的名称服务器的使用。
Required API token permissions
At least one of the following token permissions is required:Zone DNS Settings WriteDNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_settings" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"multi_provider": true
}'若你将 Cloudflare 用作辅助 DNS 提供商,请执行以下操作:
-
在 Cloudflare 仪表板中,转到 DNS Settings(DNS 设置) 页面。
Go to Settings ↗ -
对于 DNSSEC with Secondary DNS(辅助 DNS 的 DNSSEC),选择 Live signing(实时签名)。
- 同时启用 Multi-signer DNSSEC(多方签名 DNSSEC)。
- 将外部提供商的区域签名密钥(ZSK)添加到主 DNS 提供商上的 DNSKEY 记录。该记录应成功传输到 Cloudflare。
- 在主 DNS 提供商上将外部提供商的名称服务器作为 NS 记录添加到 zone apex。这些记录应成功传输到 Cloudflare。
- 使用 Edit DNSSEC Status 端点 为你的 zone 启用 DNSSEC 并激活多方签名 DNSSEC。将
status设为active,将dnssec_multi_signer设为true,如下例所示。
Required API token permissions
At least one of the following token permissions is required:DNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dnssec" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"status": "active",
"dnssec_multi_signer": true
}'-
将外部提供商的 ZSK 添加到主 DNS 提供商上的 DNSKEY 记录。该记录应成功传输到 Cloudflare。
-
在主 DNS 提供商上将外部提供商的名称服务器作为 NS 记录添加到 zone apex。这些记录应成功传输到 Cloudflare。
- 使用 API 或从某个已分配的 Cloudflare 名称服务器发起查询,获取 Cloudflare 的 ZSK。
API 示例:
curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/dnssec/zsk" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"命令行查询示例:
$ dig <ZONE_NAME> dnskey @<CLOUDFLARE_NAMESERVER> +noall +answer | grep 256- 将上一步获取的 Cloudflare ZSK 添加到外部提供商的 DNSKEY 记录集中。
- 将 Cloudflare 的名称服务器添加到外部提供商的 NS 记录集中。
-
向注册商添加 DS 记录,每个提供商一条。你可以在 DNS Settings(DNS 设置) ↗ 页面的 DS Record(DS 记录) 下查看 Cloudflare DS 记录。
-
在注册商处更新名称服务器设置,以包含你将在多方签名 DNSSEC 设置中使用的所有提供商的名称服务器。