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

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

啟用DNSSEC簽署和建立信任鏈

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

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

注意

在開始之前,請務必先閱讀 在 Amazon 路線 53 中配置DNSSEC簽名 中的先決條件。

啟用DNSSEC簽署需要採取三個步驟,如下列各節所述。

步驟 1:準備啟用DNSSEC簽署

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

準備啟用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. 降低SOATTL和最SOA小字段。

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

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

    example.com。

    900

    IN

    SOA

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

    SOATTL和最SOA小值欄位決定解析器記住否定答案的時間長度。啟用簽署之後,Route 53 名稱伺服器會開始傳回否定答案的NSEC記錄。NSEC包含解析器可能用於合成否定答案的信息。如果您必須回滾,因為這些NSEC信息導致解析器假定一個名稱的否定答案,那麼您只需要等待解析器的最大值SOATTL和最SOA小字段的最大值即可停止該假設。

    回復:撤消SOA更改。

  4. 確保TTL和最SOA小字段更改是有效的。

    GetChange於確定目前為止您的變更已傳播到所有 Route 53 DNS 伺服器。

步驟 2:啟用DNSSEC簽名並創建 KSK

您可以使DNSSEC用 AWS CLI 或在 Route 53 主控台上啟用簽署並建立金鑰簽署金鑰 (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 並開啟 Route 53 主控台,位於https://console.aws.amazon.com/route53/

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

  3. DNSSEC簽署索引標籤上,選擇 [啟用DNSSEC簽署]。

    注意

    如果本節中的選項是「停用DNSSEC簽署」,表示您已完成啟用DNSSEC簽署的第一個步驟。請確定您已為託管區域建立或已存在的託管區域的信任鏈DNSSEC,然後您就完成了。如需詳細資訊,請參閱步驟 3:建立信任鏈

  4. 在金鑰簽署金鑰 (KSK) 建立區段中,選擇建立新的KSK,然後KSK在提供KSK名稱下輸入 Route 53 將為您建立的名稱。名稱僅能包含字母、數字和底線 (_)。它必須獨一無二。

  5. 在「客戶管理」下CMK,選擇 Route 53 在為您建立時使用的客戶管KSK理金鑰。您可以使用適用於DNSSEC簽署的現有客戶管理金鑰,或建立新的客戶管理金鑰。

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

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

    注意

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

  7. 選擇 [啟用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 並開啟 Route 53 主控台,位於https://console.aws.amazon.com/route53/

  2. 在瀏覽窗格中,選擇 [託管區域],然後選擇您要為其建立信任DNSSEC鏈的託管區域。您必須先啟用DNSSEC簽署功能。

  3. 在 [DNSSEC簽署] 索引標籤的 [DNSSEC簽署] 下,選擇 [檢視資訊] 以建立 DS 記錄

    注意

    如果您在本節中看不到檢視資訊以建立 DS 記錄,則必須先啟用DNSSEC簽署,然後才能建立信任鏈。選擇 [啟用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狀態旁邊的 [管理金鑰]。

      3. 在 [管理DNSSEC金鑰] 對話方塊中,從下拉式功能表選擇適當的 Route 53 登錄器的金鑰類型演算法

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

      5. 選擇新增

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

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

      為了確保以下步驟順利進行,請TTL向父區域引入低 DS。如果您需要復原變更,建議您TTL將 DS 設定為 5 分鐘 (300 秒) 以加快復原速度。

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

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

        提供 $ds_record_value 給父區域擁有者。您可以按一下 [檢視資訊],在主控台中建立 DS 記錄,並複製 DS 記錄欄位,或呼叫 G et DNSSEC 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 記錄,

          在開啟路由 53 主控台https://console.aws.amazon.com/route53/

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

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

    復原:從父區域移除 DS、等待 DSTTL,然後復原建立信任的步驟。如果父區域位於 Route 53 上,則父區域擁有者可以將JSON檔案DELETE中的Action從變更UPSERT為,然後重新執行上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-aware 解析器將驗證您的區域。

  3. 請觀察名稱解析。

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

    我們建議監控長達 2 週。

  4. (選擇性) 延長 DS 和 NS TTLs。

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

    如果您可以變更 DSTTL,建議您將其設定為 1 小時。