啟用 DNSSEC 簽署並建立信任鏈 - Amazon Route 53

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

啟用 DNSSEC 簽署並建立信任鏈

遞增步驟適用於託管區域擁有者和父區域維護者。這可以是同一個人,但如果不是,區域擁有者應通知父區域維護者並與其合作。

我們建議您按照本文中的步驟簽署您的區域並將其納入信任鏈中。以下步驟會將加入 DNSSEC 的風險降至最低。

注意

在開始之前,請務必先閱讀 在 Amazon Route 53 中設定 DNSSEC 簽署 中的先決條件。

啟用 DNSSEC 簽署需要執行三個步驟,如以下章節所述。

步驟 1:準備啟用 DNSSEC 簽署

準備步驟透過監控區域可用性並縮短啟用簽署與插入委派簽署人 (DS) 記錄之間的等待時間,協助您將加入 DNSSEC 的風險降至最低。

準備啟用 DNSSEC 簽署
  1. 監控區域可用性。

    您可以監控該區域在您網域名稱中的可用性。此可協助您處理在啟用 DNSSEC 簽署後可能需要倒回步驟的任何問題。您可以藉由使用查詢日誌記錄,監控具有大部分流量的網域名稱。如需設定查詢日誌記錄的詳細資訊,請參閱 監控 Amazon Route 53

    可以透過 Shell 指令碼或透過第三方服務進行監控。但是,其不應是判斷是否需要回復的唯一信號。您也可能會因為網域名稱不可用,而得到來自客戶的反饋。

  2. 降低區域的最大 TTL。

    區域的最大 TTL 是區域中最長的 TTL 記錄。在以下區域示例中,區域的最大 TTL 為 1 天 (86400 秒)。

    名稱 TTL 記錄類別 記錄類型 記錄資料

    example.com。

    900

    IN

    SOA

    ns1.example.com。hostmaster.example.com。2002022401 10800 15 604800 300

    example.com。

    900

    IN

    NS

    ns1.example.com。

    route53.example.com。

    86400

    IN

    TXT

    some txt record

    降低區域的最大 TTL 將有助於縮短啟用簽署與插入委派簽署人 (DS) 記錄之間的等待時間。建議將區域的最大 TTL 降至 1 小時 (3600 秒)。如果解析器在快取簽署記錄時發生任何問題,這讓您在一個小時後即可回復。

    回復:復原 TTL 變更。

  3. 降低 SOA TTL 和 SOA 最小值欄位。

    SOA 最小值欄位是 SOA 記錄資料中的最後一個欄位。在以下 SOA 記錄示例中,最小值欄位的值為 5 分鐘(300 秒)。

    名稱 TTL 記錄類別 記錄類型 記錄資料

    example.com。

    900

    IN

    SOA

    ns1.example.com。hostmaster.example.com。2002022401 10800 15 604800 300

    SOA TTL 和 SOA 最小值欄位決定解析器記住否定答案的時間長度。啟用簽署後,Route 53 名稱伺服器開始傳回用於否定答案的 NSEC 記錄。NSEC 包含解析器可能用於合成否定答案的資訊。如果因為 NSEC 資訊導致解析器對一個名稱給予否定的答案而必須回復,則只需等待 SOA TTL 和 SOA 最小值欄位中的最大值的時間後,解析器即會停止假設。

    回復:復原 SOA 變更。

  4. 確認 TTL 和 SOA 最小值欄位變更生效。

    用於確保GetChange到目前為止您的更改已傳播到所有 Route 53 DNS 服務器。

步驟 2:啟用 DNSSEC 簽署並建立 KSK

您可以使用 AWS CLI 或在 Route 53 控制台上啟用 DNSSEC 簽名並創建密鑰簽名密鑰(KSK)。

當您提供或建立客戶受管的 KMS 金鑰時,有幾點要求需要滿足。如需詳細資訊,請參閱 使用 DNSSEC 的客戶受管金鑰

CLI

您可以使用您已有的金鑰,或透過使用您自己的 hostedzone_idcmk_arnksk_name,和unique_string 的值 (以使請求為唯一) 執行類似如下的 AWS CLI 命令以建立金鑰 :

aws --region us-east-1 route53 create-key-signing-key \ --hosted-zone-id $hostedzone_id \ --key-management-service-arn $cmk_arn --name $ksk_name \ --status ACTIVE \ --caller-reference $unique_string

如需客戶受管金鑰的詳細資訊,請參閱 使用 DNSSEC 的客戶受管金鑰。另請參閱 CreateKeySigningKey

若要啟用 DNSSEC 簽署,請使用您自己的值來執行類似下列的 AWS CLI 命令:hostedzone_id

aws --region us-east-1 route53 enable-hosted-zone-dnssec \ --hosted-zone-id $hostedzone_id

如需詳細資訊,請參閱enable-hosted-zone-dnssecEnableHostedZoneDNSSEC

Console
啟用 DNSSEC 簽署並建立 KSK
  1. 登入 AWS Management Console 並開啟路線 53 主控台,網址為 https://console.aws.amazon.com/route53/

  2. 在導覽窗格中,選擇託管區域,然後選擇您要啟用 DNSSEC 簽署的託管區域。

  3. DNSSEC signing (DNSSEC 簽署) 標籤上,選擇 Enable DNSSEC signing (啟用 DNSSEC 簽署)

    注意

    如果本部分中的選項是 Disable DNSSEC signing (停用 DNSSEC 簽署),則表明您已完成啟用 DNSSEC 簽署的第一步。請確定您建立或已經存在 DNSSEC 託管區域的信任鏈,然後即可完成此任務。如需詳細資訊,請參閱 步驟 3:建立信任鏈

  4. Key-signing key (KSK) creation (建立金鑰簽署金鑰 (KSK)) 部分中,選擇 Create new KSK (建立新的 KSK), 並在 Provide KSK name (提供 KSK 名稱) 中,輸入 Route 53 將為您建立的 KSK 的名稱。名稱僅能包含字母、數字和底線 (_)。它必須獨一無二。

  5. Customer managed CMK (客戶受管的 CMK) 下,請為 Route 53 選擇客戶受管的金鑰,以便在為您建立 KSK 時使用。您可以使用適用於 DNSSEC 簽署的現有客戶受管金鑰,也可以建立新的客戶受管金鑰。

    當您提供或建立客戶受管的金鑰時,有幾點要求需要滿足。如需詳細資訊,請參閱 使用 DNSSEC 的客戶受管金鑰

  6. 輸入現有客戶受管金鑰的別名。如果您想要使用新的客戶受管金鑰,請輸入客戶受管金鑰的別名,Route 53 即會為您建立一個金鑰。

    注意

    如果您選擇讓 Route 53 建立客戶受管金鑰,請注意每個客戶受管金鑰都要分別支付費用。有關更多資訊,請參閱 AWS 金鑰 Management Service 定價

  7. 選擇 Enable DNSSEC signing (啟用 DNSSEC 簽署)

啟用區域簽署後,請完成以下步驟 (不論您是使用主控台或是 CLI):

  1. 確認區域簽署已生效。

    如果您使用 AWS CLI,您可以使用來自EnableHostedZoneDNSSEC()呼叫輸出的作業識別碼來執行 get-change,或確GetChange定所有 Route 53 DNS 伺服器正在簽署回應 (狀態 =INSYNC)。

  2. 等待至少前一個區域的最大 TTL 的時間。

    等待解析器清除其快取中所有的未簽署記錄。為此,您應等待至少前一個區域的最大 TTL 的時間。在上述 example.com 區域中,等待時間會是 1 天。

  3. 監控客戶問題報告。

    啟用區域簽署後,客戶可能會開始看到與網路裝置和解析器有關的問題。建議的監控期為 2 週。

    以下為您可能看到的問題示例:

    • 有些網路裝置可以將 DNS 回答大小限制為 512 位元組以下,這對於有些簽署回答來說太小。應重新設定這些網路裝置,以允許更大的 DNS 回答大小。

    • 有些網路裝置會對 DNS 回答進行深入檢查,並去除有些其不理解的記錄,像是用於 DNSSEC 的記錄。應重新設定這些裝置。

    • 有些客戶的解析器宣稱可以接受比其網路支援的更大的 UDP 回應。您可以測試網路能力並適當地設定解析器。如需詳細資訊,請參閱 DNS 回覆大小測試伺服器

復原:呼叫 DisableHostedZoneDNSSEC,然後復原中的步驟。步驟 1:準備啟用 DNSSEC 簽署

步驟 3:建立信任鏈

在 Route 53 中啟用託管區域的 DNSSEC 簽署之後,建立託管區域的信任鏈,以完成 DNSSEC 簽署設定。您可以藉由在託管區域中建立委派簽署人 (DS) 記錄來完成此任務 (使用 Route 53 提供的資訊)。視網域的註冊位置而定,您可以將記錄新增至 Route 53 或其他網域註冊商中的父託管區域。

建立信任鏈以進行 DNSSEC 簽署
  1. 登入 AWS Management Console 並開啟路線 53 主控台,網址為 https://console.aws.amazon.com/route53/

  2. 在導覽窗格中,選擇 Hosted zones (託管區域),然後選擇您想要建立 DNSSEC 信任鏈的託管區域。您必須先啟用 DNSSEC 簽署。

  3. DNSSEC signing (DNSSEC 簽署) 標籤中的 DNSSEC signing (DNSSEC 簽署) 下,選擇 View information to create DS record (檢視資訊以建立 DS 記錄)

    注意

    如果您看不到 View information to create DS record (檢視資訊以建立 DS 記錄),則必須先啟用 DNSSEC 簽署,才能建立信任鏈。選擇 Enable DNSSEC signing (啟用 DNSSEC 簽署) 並完成 步驟 2:啟用 DNSSEC 簽署並建立 KSK 中所述的步驟,然後回到這些步驟以建立信任鏈。

  4. Establish a chain of trust (建立信任鏈) 下,選擇 Route 53 registrar (Route 53 註冊商)Another domain registrar (其他網域註冊商),視您的網域註冊位置而定。

  5. 使用步驟 3提供的值,以為 Route 53 中的父託管區域建立 DS 記錄。如果您的網域名稱不在 Route 53 託管,請使用提供的值在網域註冊商網站上建立 DS 記錄。

    • 如果上層區域是透過 Route 53 管理的網域,請依照下列步驟執行:

      請確定您設定正確的簽署演算法 (ECDSAP256SHA256 和類型 13) 和摘要演算法 (SHA-256 和類型 2)。

      如果 Route 53 是您的註冊商,請在 Route 53 主控台中執行以下操作:

      1. 請注意 Key type (金鑰類型)Signing algorithm (簽署演算法) 以及 Public key (公有金鑰) 值。在導覽窗格中,選擇 Registered domains (已註冊的網域)

      2. 選取網域,然後在 DNSSEC status (DNSSEC 狀態) 旁邊,選擇 Manage keys (管理金鑰)

      3. Manage DNSSEC keys (管理 DNSSEC 金鑰) 對話方塊中,從下拉式選單中為 Route 53 registrar (Route 53 註冊商) 選擇適當的 Key type (金鑰類型) 和 Algorithm (演算法)。

      4. 複製 Route 53 註冊商的 Public key (公有金鑰)。在 Manage DNSSEC keys (管理 DNSSEC 金鑰)對話方塊中,將值貼到 Public key (公有金鑰) 方塊中。

      5. 選擇新增

        Route 53 會將 DS 記錄從公有金鑰新增至父區域。例如,如果您的網域為 example.com,則 DS 記錄會新增至 .com DNS 區域。

    • 如果上層區域託管於 Route 53 上,或是在其他註冊處管理網域,請聯絡上層區域或網域註冊擁有者,以遵循下列指示:

      為確保以下步驟順利進行,請對父區域導入一個低 DS TTL。建議將 DS TTL 設為 5 分鐘 (300 秒),以便在需要回復變更時更快速恢復。

      • 如果您的父區域由其他註冊機構管理,請聯絡您的註冊商以導入您區域的 DS 記錄。一般來說,您將無法調整 DS 記錄的 TTL。

      • 如果您的父區域託管在 Route 53 上,請聯絡父區域擁有者,以導入您區域的 DS 記錄。

        提供 $ds_record_value 給父區域擁有者。您可以透過點擊主控台中的 View Information to create DS record (查看資訊以建立 DS 記錄) 並複製 DS record (DS 記錄) 欄位,或透過呼叫 GetDNSSEC API 並檢索 ‘DSRecord’ 欄位的值,取得此資訊:

        aws --region us-east-1 route53 get-dnssec --hosted-zone-id $hostedzone_id

        父區域擁有者可以透過 Route 53 主控台或 CLI 插入記錄。

        • 若要使用插入 DS 記錄 AWS CLI,父區域擁有者會建立並命名 JSON 檔案,類似下列範例。父區域擁有者可能會將檔案命名為類似 inserting_ds.json

          { "HostedZoneId": "$parent_zone_id", "ChangeBatch": { "Comment": "Inserting DS for zone $zone_name", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "$zone_name", "Type": "DS", "TTL": 300, "ResourceRecords": [ { "Value": "$ds_record_value" } ] } } ] } }

          然後執行以下命令:

          aws --region us-east-1 route53 change-resource-record-sets --cli-input-json file://inserting_ds.json
        • 若要使用主控台插入 DS 記錄,

          請在 https://console.aws.amazon.com/route53/ 開啟 Route 53 主控台。

          在導覽窗格中,選擇 Hosted zones (託管區域),即託管區域的名稱,然後選擇 Create record (建立記錄) 按鈕。請確認 Routing policy (路由政策) 選擇簡單路由。

          Record name (記錄名稱) 欄位中輸入與 $zone_name 相同的名稱,在 Record type (記錄類型) 下拉式選單中選擇 DS,然後將 $ds_record_value 的值輸入 Value (值) 欄位,然後選擇Create records (建立記錄)。

    回復:從父區域中刪除 DS,等待 DS TTL 的時間,然後回到建立信任的步驟。如果父區域託管在 Route 53 上,則父區域擁有者可以在 JSON 檔案將 ActionUPSERT 變更為 DELETE,然後重新執上面的 CLI 示例。

  6. 根據網域記錄的 TTL,等候更新傳播。

    如果父區域位於 Route 53 DNS 服務上,父區域擁有者可以透過 GetChangeAPI 確認完整傳播。

    否則,您可以定期探測 DS 記錄的父區域,之後再等待 10 分鐘,以提高 DS 記錄插入已完全傳播的概率。請注意,有些註冊商已有 DS 插入排程,例如,每天一次。

當您在父區域中導入委派簽署人 (DS) 記錄時,已取得 DS 的驗證解析器將開始驗證來自區域的回應。

為確保建立信任的步驟順利進行,請完成以下操作:

  1. 查找最大 NS TTL。

    有兩組與您的區域相關聯的 NS 記錄:

    • 委派 NS 記錄 — 這是父區域所持有的您區域的 NS 記錄。您可以藉由執行以下 Unix 命令來查找此記錄 (如果您的區域是 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。

  2. 等待最大 NS TTL 的時間。

    在 DS 插入之前,解析器會收到簽署回應,但不會驗證簽章。插入 DS 記錄時,在該區域的 NS 記錄過期前,解析器都看不到該記錄。當解析器重新獲取 NS 記錄時,亦將傳回 DS 記錄。

    如果您的客戶在具有不同步時鐘的主機上執行解析器,請確保時鐘在正確時間的 1 小時以內。

    完成此步驟後,所有具有 DNSSEC 意識的解析器都將驗證您的區域。

  3. 請觀察名稱解析。

    您應該觀察到,解析器在驗證您的區域方面沒有任何問題。確認您亦將客戶向您報告問題所需要的時間納入考慮。

    我們建議監控長達 2 週。

  4. (選用)延長 DS 和 NS TTL。

    如果對設定滿意,則可以儲存您所做的 TTL 和 SOA 變更。請注意,Route 53 將已簽署區域的 TTL 限制為 1 週。如需詳細資訊,請參閱 在 Amazon Route 53 中設定 DNSSEC 簽署

    如果您能變更 DS TTL,我們建議您將其設為 1 小時。