

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

# 啟用 DNSSEC 簽署並建立信任鏈
<a name="dns-configuring-dnssec-enable-signing"></a>

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

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

**注意**  
在開始之前，請務必先閱讀 [在 Amazon Route 53 中設定 DNSSEC 簽署](dns-configuring-dnssec.md) 中的先決條件。

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

**Topics**
+ [步驟 1：準備啟用 DNSSEC 簽署](#dns-configuring-dnssec-enable-signing-step-1)
+ [步驟 2：啟用 DNSSEC 簽署並建立 KSK](#dns-configuring-dnssec-enable)
+ [步驟 3：建立信任鏈](#dns-configuring-dnssec-chain-of-trust)

## 步驟 1：準備啟用 DNSSEC 簽署
<a name="dns-configuring-dnssec-enable-signing-step-1"></a>

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

**準備啟用 DNSSEC 簽署**

1. 監控區域可用性。

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

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

1. 降低區域的最大 TTL。

   區域的最大 TTL 是區域中最長的 TTL 記錄。在以下區域示例中，區域的最大 TTL 為 1 天 (86400 秒)。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/dns-configuring-dnssec-enable-signing.html)

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

   **回復：**復原 TTL 變更。

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

   SOA 最小值欄位是 SOA 記錄資料中的最後一個欄位。在以下 SOA 記錄示例中，最小值欄位的值為 5 分鐘（300 秒）。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/dns-configuring-dnssec-enable-signing.html)

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

   **回復：**復原 SOA 變更。

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

   使用 [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html) 以確保到目前為止所做的變更已傳播到所有 Route 53 DNS 伺服器。

## 步驟 2：啟用 DNSSEC 簽署並建立 KSK
<a name="dns-configuring-dnssec-enable"></a>

您可以在 Route 53 主控台上使用 AWS CLI 或 啟用 DNSSEC 簽署並建立金鑰簽署金鑰 (KSK)。
+ [CLI](#dnssec_CLI)
+ [主控台](#dnssec_console)

當您提供或建立 KMS 金鑰時，有幾個需求。如需詳細資訊，請參閱[使用 DNSSEC 的客戶受管金鑰](dns-configuring-dnssec-cmk-requirements.md)。

------
#### [ CLI ]

您可以使用您已有的金鑰，或透過使用您自己的 `hostedzone_id`、`cmk_arn`、`ksk_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 的客戶受管金鑰](dns-configuring-dnssec-cmk-requirements.md)。另請參閱 [CreateKeySigningKey](https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateKeySigningKey.html)。

若要啟用 DNSSEC 簽署，請使用您自己的 值執行如下所示的 AWS CLI 命令`hostedzone_id`：

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

如需詳細資訊，請參閱 [enable-hosted-zone-dnssec](https://docs.aws.amazon.com/cli/latest/reference/route53/enable-hosted-zone-dnssec.html) 和 [EnableHostedZoneDNSSEC](https://docs.aws.amazon.com/Route53/latest/APIReference/API_EnableHostedZoneDNSSEC.html)。

------
#### [ Console ]<a name="dns-configuring-dnssec-enable-procedure"></a>

**啟用 DNSSEC 簽署並建立 KSK**

1. 登入 AWS 管理主控台 並開啟 Route 53 主控台，網址為 https：//[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

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

1. 在 **DNSSEC signing (DNSSEC 簽署)** 標籤上，選擇 **Enable DNSSEC signing (啟用 DNSSEC 簽署)**。
**注意**  
如果本部分中的選項是 **Disable DNSSEC signing (停用 DNSSEC 簽署)**，則表明您已完成啟用 DNSSEC 簽署的第一步。請確定您建立或已經存在 DNSSEC 託管區域的信任鏈，然後即可完成此任務。如需詳細資訊，請參閱[步驟 3：建立信任鏈](#dns-configuring-dnssec-chain-of-trust)。

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

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

   當您提供或建立客戶受管的金鑰時，有幾點要求需要滿足。如需詳細資訊，請參閱[使用 DNSSEC 的客戶受管金鑰](dns-configuring-dnssec-cmk-requirements.md)。

1. 輸入現有客戶受管金鑰的別名。如果您想要使用新的客戶受管金鑰，請輸入客戶受管金鑰的別名，Route 53 即會為您建立一個金鑰。
**注意**  
如果您選擇讓 Route 53 建立客戶受管金鑰，請注意每個客戶受管金鑰都要分別支付費用。有關更多資訊，請參閱 [AWS 金鑰 Management Service 定價](https://aws.amazon.com/kms/pricing/)。

1. 選擇 **Enable DNSSEC signing (啟用 DNSSEC 簽署)**。

------

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

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

   如果您使用 AWS CLI，您可以使用來自`EnableHostedZoneDNSSEC()`呼叫輸出的操作 ID 來執行 [get-change ](https://docs.aws.amazon.com/cli/latest/reference/route53/get-change.html)或 [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html)，以確保所有 Route 53 DNS 伺服器正在簽署回應 （狀態 = `INSYNC`)。

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

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

1. 監控客戶問題報告。

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

   以下為您可能看到的問題示例：
   + 有些網路裝置可以將 DNS 回答大小限制為 512 位元組以下，這對於有些簽署回答來說太小。應重新設定這些網路裝置，以允許更大的 DNS 回答大小。
   + 有些網路裝置會對 DNS 回答進行深入檢查，並去除有些其不理解的記錄，像是用於 DNSSEC 的記錄。應重新設定這些裝置。
   + 有些客戶的解析器宣稱可以接受比其網路支援的更大的 UDP 回應。您可以測試網路能力並適當地設定解析器。如需詳細資訊，請參閱 [DNS 回覆大小測試伺服器](https://www.dns-oarc.net/oarc/services/replysizetest/)。

**回復：**呼叫 [DisableHostedZoneDNSSEC](https://docs.aws.amazon.com/Route53/latest/APIReference/API_DisableHostedZoneDNSSEC.html) 然後回復 [步驟 1：準備啟用 DNSSEC 簽署](#dns-configuring-dnssec-enable-signing-step-1) 中的步驟。

## 步驟 3：建立信任鏈
<a name="dns-configuring-dnssec-chain-of-trust"></a>

在 Route 53 中啟用託管區域的 DNSSEC 簽署之後，建立託管區域的信任鏈，以完成 DNSSEC 簽署設定。您可以藉由在*父*託管區域中建立委派簽署人 (DS) 記錄來完成此任務 (使用 Route 53 提供的資訊)。視網域的註冊位置而定，您可以將記錄新增至 Route 53 或其他網域註冊商中的父託管區域。<a name="dns-configuring-dnssec-chain-of-trust-procedure"></a>

**建立信任鏈以進行 DNSSEC 簽署**

1. 登入 AWS 管理主控台 並開啟 Route 53 主控台，網址為 https：//[https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)。

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

1. 在 **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](#dns-configuring-dnssec-enable) 中所述的步驟，然後回到這些步驟以建立信任鏈。

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

1. 使用步驟 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 (已註冊的網域)**。

     1. 選取網域，然後在 **DNSSEC 金鑰**索引標籤中，選擇**新增金鑰**。

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

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

     1. 選擇**新增**。

         Route 53 會將 DS 記錄從公有金鑰新增至父區域。例如，如果您的網域為 `example.com`，則 DS 記錄會新增至 .com DNS 區域。
   + 如果您的網域是在另一個登錄檔上管理，請遵循**另一個網域登錄檔**一節中的指示。

     為確保以下步驟順利進行，請對父區域導入一個低 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](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetDNSSEC.html) 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/](https://console.aws.amazon.com/route53/) 開啟 Route 53 主控台。

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

         在**記錄名稱**欄位中輸入與 相同的名稱`$zone_name`，從**記錄類型**下拉式清單中選取 DS，然後在`$ds_record_value`**值**欄位中輸入 的值，然後選擇**建立記錄**。

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

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

   如果父區域位於 Route 53 DNS 服務上，則父區域擁有者可以透過 [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html) API 確認完全傳播。

   否則，您可以定期探測 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。

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

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

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

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

1. 請觀察名稱解析。

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

   我們建議監控長達 2 週。

1. （選用）延長 DS 和 NS TTL。

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

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