跳转到内容
搜索文档

设置多方签名 DNSSEC

最后更新 查看 MarkdownAgent 设置

本页说明如何在 Cloudflare 上启用多方签名 DNSSEC,使用 RFC 8901 中描述的模型 2

开始之前

请注意:

  • 此过程要求你的其他 DNS 提供商也支持多方签名 DNSSEC。
  • 虽然部分步骤可通过仪表板完成,但目前整个过程只能通过 API 完成。
  • DNS Settings(DNS 设置) 页面启用 DNSSECMulti-signer DNSSEC(多方签名 DNSSEC) 仅替代 1. 设置 Cloudflare zone 中的第一步。你仍需按照本教程的其余部分完成设置。

1. 设置 Cloudflare zone

Cloudflare 作为主 DNS(完整设置)

若你将 Cloudflare 用作主 DNS 提供商(即在 Cloudflare 中管理 DNS 记录),请执行以下操作:

  1. 在 Cloudflare 仪表板中,转到 DNS Settings(DNS 设置) 页面。

    Go to Settings ↗
  2. 选择 Enable DNSSEC(启用 DNSSEC),然后选择 Confirm(确认)

  1. 同时启用 Multi-signer DNSSEC(多方签名 DNSSEC)Multi-provider DNS(多提供商 DNS)
  2. 转到 DNS Records(DNS 记录) 页面,并在 zone apex(记录 Name(名称) 字段应使用 @)创建以下记录:
    • 一条 DNSKEY 记录,包含外部提供商的区域签名密钥(ZSK)。
    • 一条 NS 记录,包含外部提供商的名称服务器。
  1. 使用 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
Edit DNSSEC Statusbash
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
	}'
  1. 通过在 zone 上创建 DNSKEY 记录,将外部提供商的 ZSK 添加到 Cloudflare。

Required API token permissions

At least one of the following token permissions is required:
  • DNS Write
Create DNS Recordbash
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
	}'
  1. 将外部提供商的名称服务器作为 NS 记录添加到你的 zone apex。

Required API token permissions

At least one of the following token permissions is required:
  • DNS Write
Create DNS Recordbash
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
	}'
  1. 使用以下 API 请求,启用上一步中添加的名称服务器的使用。

Required API token permissions

At least one of the following token permissions is required:
  • Zone DNS Settings Write
  • DNS Write
Update DNS Settingsbash
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 提供商,请执行以下操作:

  1. 在 Cloudflare 仪表板中,转到 DNS Settings(DNS 设置) 页面。

    Go to Settings ↗
  2. 对于 DNSSEC with Secondary DNS(辅助 DNS 的 DNSSEC),选择 Live signing(实时签名)

  1. 同时启用 Multi-signer DNSSEC(多方签名 DNSSEC)
  2. 将外部提供商的区域签名密钥(ZSK)添加到主 DNS 提供商上的 DNSKEY 记录。该记录应成功传输到 Cloudflare。
  3. 在主 DNS 提供商上将外部提供商的名称服务器作为 NS 记录添加到 zone apex。这些记录应成功传输到 Cloudflare。
  1. 使用 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
Edit DNSSEC Statusbash
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
	}'
  1. 将外部提供商的 ZSK 添加到主 DNS 提供商上的 DNSKEY 记录。该记录应成功传输到 Cloudflare。

  2. 在主 DNS 提供商上将外部提供商的名称服务器作为 NS 记录添加到 zone apex。这些记录应成功传输到 Cloudflare。

2. 设置外部提供商

  1. 使用 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
  1. 将上一步获取的 Cloudflare ZSK 添加到外部提供商的 DNSKEY 记录集中。
  2. 将 Cloudflare 的名称服务器添加到外部提供商的 NS 记录集中。

3. 设置注册商

  1. 向注册商添加 DS 记录,每个提供商一条。你可以在 DNS Settings(DNS 设置) 页面的 DS Record(DS 记录) 下查看 Cloudflare DS 记录。

  2. 在注册商处更新名称服务器设置,以包含你将在多方签名 DNSSEC 设置中使用的所有提供商的名称服务器。

这篇文档对您有帮助吗?