本文介绍如何使用域名系统安全扩展 (DNSSEC) 对 DNS 区域进行签名。
若要从一个区域中删除 DNSSEC 签名,请参阅如何取消对 Azure 公共 DNS 区域的签名。
先决条件
- DNS 区域必须由 Azure 公共 DNS 托管。 有关详细信息,请参阅管理 DNS 区域。
- 父 DNS 区域必须使用 DNSSEC 进行签名。 大多数主要顶级域(.com、.net、.org)均已进行签名。
使用 DNSSEC 对区域进行签名
若要使用 DNSSEC 保护 DNS 区域,必须先对该区域进行签名。 区域签名过程会创建一个委派签名者 (DS) 记录,该记录随后必须添加到父区域。
使用 Azure 门户通过 DNSSEC 对区域进行签名:
在 Azure 门户主页上,搜索并选择“DNS 区域”。
选择你的 DNS 区域,然后从该区域的“概述”页中选择“DNSSEC”。 可从顶部菜单或“DNS 管理”下选择“DNSSEC”。
选中“启用 DNSSEC”复选框。
系统提示你确认是否要启用 DNSSEC 时,请选择“确定”。
等待区域签名完成。 对区域进行签名后,查看显示的 DNSSEC 委派信息。 请注意,状态为:已签名但未委派。
注意
如果 Azure 网络配置不允许委托检查,则会取消此处显示的委托消息。 在这种情况下,可以使用公共 DNSSEC 调试程序来验证委托状态。
复制委派信息,并使用它在父区域中创建一个 DS 记录。
如果父区域是顶级域(例如:.com
),则必须在注册机构中添加该 DS 记录。 每个注册机构都有自己的流程。 注册机构可能会要求提供密钥标记、算法、摘要类型和密钥摘要等值。 在此处所示的示例中,这些值为:
密钥标记:4535
算法:13
摘要类型:2
摘要:7A1C9811A965C46319D94D1D4BC6321762B632133F196F876C65802EC5089001
向注册机构提供 DS 记录时,注册机构将 DS 记录添加到父区域,例如顶级域 (TLD) 区域。
如果你拥有父区域,可直接将 DS 记录添加到父区域。 以下示例演示如何将 DS 记录添加到子区域 secure.adatum.com 的 DNS 区域 adatum.com(在这两个区域都使用 Azure 公共 DNS 进行托管时):
如果你未拥有父区域,请将 DS 记录发送给父区域的所有者,并附上将该记录添加到其区域的说明。
将 DS 记录上传到父区域时,选择区域的 DNSSEC 信息页,并验证是否显示“已签名并已建立委派”。 DNS 区域现在已完全通过 DNSSEC 签名。
注意
如果 Azure 网络配置不允许委托检查,则会取消此处显示的委托消息。 在这种情况下,可以使用公共 DNSSEC 调试程序来验证委托状态。
- 使用 Azure CLI 对区域进行签名:
# Ensure you are logged in to your Azure account
az login
# Select the appropriate subscription
az account set --subscription "your-subscription-id"
# Enable DNSSEC for the DNS zone
az network dns dnssec-config create --resource-group "your-resource-group" --zone-name "adatum.com"
# Verify the DNSSEC configuration
az network dns dnssec-config show --resource-group "your-resource-group" --zone-name "adatum.com"
- 获取委派信息,并使用它在父区域中创建一个 DS 记录。
可使用以下 Azure CLI 命令显示 DS 记录信息:
az network dns zone show --name "adatum.com" --resource-group "your-resource-group" | jq '.signingKeys[] | select(.delegationSignerInfo != null) | .delegationSignerInfo'
示例输出:
{
"digestAlgorithmType": 2,
"digestValue": "0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C7100EA776C",
"record": "26767 13 2 0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C7100EA776C"
}
或者,还可通过在命令行上使用 dig.exe 来获取 DS 信息:
dig adatum.com DS +dnssec
示例输出:
;; ANSWER SECTION:
adatum.com. 86400 IN DS 26767 13 2 0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C71 00EA776C
在这些示例中,DS 值为:
- 密钥标记:26767
- 算法:13
- 摘要类型:2
- 摘要:0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C7100EA776C
如果父区域是顶级域(例如:.com
),则必须在注册机构中添加该 DS 记录。 每个注册机构都有自己的流程。
如果你拥有父区域,可直接将 DS 记录添加到父区域。 以下示例演示如何将 DS 记录添加到子区域 secure.adatum.com 的 DNS 区域 adatum.com(在这两个区域都使用 Azure 公共 DNS 进行签名和托管时):
az network dns record-set ds add-record --resource-group "your-resource-group" --zone-name "adatum.com" --record-set-name "secure" --key-tag <key-tag> --algorithm <algorithm> --digest <digest> --digest-type <digest-type>
- 如果你未拥有父区域,请将 DS 记录发送给父区域的所有者,并附上将该记录添加到其区域的说明。
- 使用 PowerShell 对区域进行签名和验证:
# Connect to your Azure account (if not already connected)
Connect-AzAccount
# Select the appropriate subscription
Select-AzSubscription -SubscriptionId "your-subscription-id"
# Enable DNSSEC for the DNS zone
New-AzDnsDnssecConfig -ResourceGroupName "your-resource-group" -ZoneName "adatum.com"
# Verify the DNSSEC configuration
Get-AzDnsDnssecConfig -ResourceGroupName "your-resource-group" -ZoneName "adatum.com"
- 获取委派信息,并使用它在父区域中创建一个 DS 记录。
Get-AzDnsDnssecConfig -ResourceGroupName "dns-rg" -ZoneName "adatum.com" | Select-Object -ExpandProperty SigningKey | Select-Object -ExpandProperty delegationSignerInfo
示例输出:
DigestAlgorithmType DigestValue Record
------------------- ----------- ------
2 0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C7100EA776C 26767 13 2 0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C7100EA776C
在这些示例中,DS 值为:
- 密钥标记:26767
- 算法:13
- 摘要类型:2
- 摘要:0B9E68FC1711B4AC4EC0FCE5E673EDB0AFDC18F27EA94861CDF08C7100EA776C
如果父区域是顶级域(例如:.com
),则必须在注册机构中添加该 DS 记录。 每个注册机构都有自己的流程。
如果你拥有父区域,可直接将 DS 记录添加到父区域。 以下示例演示如何将 DS 记录添加到子区域 secure.adatum.com 的 DNS 区域 adatum.com(在这两个区域都使用 Azure 公共 DNS 进行签名和托管时)。 将 <密钥标记>、<算法>、<摘要> 和 <摘要类型> 替换为之前查询的 DS 记录中的相应值。
$dsRecord = New-AzDnsRecordConfig -DnsRecordType DS -KeyTag <key-tag> -Algorithm <algorithm> -Digest <digest> -DigestType <digest-type>
New-AzDnsRecordSet -ResourceGroupName "dns-rg" -ZoneName "adatum.com" -Name "secure" -RecordType DS -Ttl 3600 -DnsRecords $dsRecord
- 如果你未拥有父区域,请将 DS 记录发送给父区域的所有者,并附上将该记录添加到其区域的说明。
后续步骤