禁用 DNSSEC 签名 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

禁用 DNSSEC 签名

在 Route 53 中禁用 DNSSEC 签名的步骤有所不同,具体取决于托管区域所属的信任链。

例如,您的托管区域可能具有包含 Delegation Signer (DS) 记录的父区域,作为信任链的一部分。托管区域本身也可能是启用 DNSSEC 签名的子区域的父区域,这是信任链的另一部分。在执行禁用 DNSSEC 签名的步骤之前,请调查并确定托管区域的完整信任链。

在禁用签名时,必须仔细撤消托管区域启用 DNSSEC 签名的信任链。要从信任链中删除托管区域,请删除包含此托管区域的信任链的所有 DS 记录。这意味着您必须按顺序执行以下操作:

  1. 删除此托管区域对于属于信任链一部分的子区域具有的所有 DS 记录。

  2. 从父区域删除 DS 记录。如果您具有信任岛(父区域中没有 DS 记录,此区域中的子区域没有 DS 记录),则可以跳过此步骤。

  3. 如果无法删除 DS 记录,为了从信任链中删除该区域,请从父区域中删除 NS 记录。有关更多信息,请参阅 为域添加或更改名称服务器和粘附记录

通过以下递增步骤,您可以监控各个步骤的有效性,以避免区域中的 DNS 可用性问题。

禁用 DNSSEC 签名
  1. 监控区域可用性。

    您可以监控区域以了解域名的可用性。这可以帮助您在启用 DNSSEC 签名后解决可能需要回滚的任何问题。您可以使用查询日志记录来监控流量最多的域名。有关设置查询日志记录的更多信息,请参阅 监控 Amazon Route 53

    可以通过 Shell 脚本或付费服务完成监控。但是,其不应作为确定是否需要回滚的唯一信号。由于域名不可用,您也可能会从客户处获得反馈。

  2. 查找当前 DS TTL。

    您可以通过运行以下 Unix 命令找到 DS TTL:

    dig -t DS example.com example.com

  3. 找到最大 NS TTL。

    有 2 组 NS 记录与您的区域相关:

    • 委托 NS 记录 — 这是由父区域持有的您的区域的 NS 记录。您可以通过运行以下 Unix 命令找到此记录:

      首先找到父区域的 NS(如果您的区域为 example.com,则父区域为 com):

      dig -t NS com

      选择一个 NS 记录,然后运行以下命令:

      dig @one of the NS records of your parent zone -t NS example.com

      例如:

      dig @b.gtld-servers.net. -t NS example.com

    • 区内 NS 记录 — 这是您的区域中的 NS 记录。您可以通过运行以下 Unix 命令找到此记录:

      dig @one of the NS records of your zone -t NS example.com

      例如:

      dig @ns-0000.awsdns-00.co.uk. -t NS example.com

      请注意两个区域的最大 TTL。

  4. 从父区域删除 DS 记录。

    请与父区域拥有者联系以删除 DS 记录。

    回滚:重新插入 DS 记录,确认 DS 插入有效,并等待最大 NS(而不是 DS TTL),然后所有解析程序将再次开始验证。

  5. 确认删除 DS 是否有效。

    如果父区域位于 Route 53 DNS 服务上,父区域拥有者可以通过 GetChange API 确认完整传播。

    否则,您可以定期检查 DS 记录的父区域,然后再等 10 分钟,以提高完整传播 DS 记录删除的可能性。请注意,一些注册商计划了 DS 删除,例如,每天一次。

  6. 等待 DS TTL。

    等待直到所有解析程序缓存中的 DS 记录过期。

  7. 禁用 DNSSEC 签名并停用密钥签名密钥 (KSK)。

    CLI

    调用 DisableHostedZoneDNSSECDeactivateKeySigningKey API。

    例如:

    aws --region us-east-1 route53 disable-hosted-zone-dnssec \ --hosted-zone-id $hostedzone_id aws --region us-east-1 route53 deactivate-key-signing-key \ --hosted-zone-id $hostedzone_id --name $ksk_name
    Console

    禁用 DNSSEC 签名

    1. 请登录 Amazon Web Services Management Console,并通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/

    2. 在导航窗格中,选择 Hosted zones(托管区域),然后选择您要为其禁用 DNSSEC 签名的托管区域。

    3. DNSSEC signing(DNSSEC 签名)选项卡上,选择 Disable DNSSEC signing(禁用 DNSSEC 签名)。

    4. Disable DNSSEC signing(禁用 DNSSEC 签名)的页面上,根据您要禁用 DNSSEC 签名的区域,选择以下任一选项。

      • 仅限父区域 — 此区域具有带有 DS 记录的父区域。在这种情况下,您必须删除父区域的 DS 记录。

      • 仅限子区域 — 此区域具有包含一个或多个子区域的信任链的 DS 记录。在这种情况下,您必须删除区域的 DS 记录。

      • 父区域和子区域 — 此区域包含一个或多个子区域的信任链的 DS 记录以及具有 DS 记录的父区域。对于此场景,请执行以下操作:

        1. 删除区域的 DS 记录。

        2. 删除父区域的 DS 记录。

        如果您具有信任岛,可跳过本步骤。

    5. 确定您在步骤 4 中删除的每个 DS 记录的 TTL,请确保最长的 TTL 时间已过期。

    6. 选中复选框以确认您已按顺序执行步骤。

    7. 在字段中键入 disable,如图所示,然后选择 Disable(禁用)。

    停用密钥签名密钥 (KSK) 的步骤

    1. 登录 Amazon Web Services Management Console,并通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/

    2. 在导航窗格中,选择 Hosted zones(托管区域),然后选择您要为其停用密钥签名密钥的托管区域。

    3. Key-signing keys (KSKs)(密钥签名密钥 (KSK))部分中,选择要停用的 KSK,然后在 Actions(操作)下,选择 Edit KSK(编辑 KSK),将 KSK status(KSK 状态)设置为 Inactive(非活动),然后选择 Save KSK(保存 KSK)。

    回滚:调用 ActivateKeySigningKeyEnableHostedZoneDNSSEC API。

    例如:

    aws --region us-east-1 route53 activate-key-signing-key \ --hosted-zone-id $hostedzone_id --name $ksk_name aws --region us-east-1 route53 enable-hosted-zone-dnssec \ --hosted-zone-id $hostedzone_id
  8. 确认禁用区域签名是否有效。

    使用 EnableHostedZoneDNSSEC() 调用中的 ID 运行 GetChange,确保所有 Route 53 DNS 服务器已停止签名响应(状态 = INSYNC)。

  9. 注意名称解析。

    应注意解析程序验证您的区域时没有导致问题。还要考虑 1-2 周客户向您报告问题所需的时间。

  10. (可选)清除。

    如果不重新启用签名,可以通过 DeleteKeySigningKey 清除 KSK,然后删除相应的客户托管式密钥以节省成本。