本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
啟用DNSSEC簽署和建立信任鏈
遞增步驟適用於託管區域擁有者和父區域維護者。這可以是同一個人,但如果不是,區域擁有者應通知父區域維護者並與其合作。
我們建議您按照本文中的步驟簽署您的區域並將其納入信任鏈中。以下步驟將最大程度地降低入DNSSEC職的風險。
注意
在開始之前,請務必先閱讀 在 Amazon 路線 53 中配置DNSSEC簽名 中的先決條件。
啟用DNSSEC簽署需要採取三個步驟,如下列各節所述。
步驟 1:準備啟用DNSSEC簽署
準備步驟透DNSSEC過監控區域可用性,並降低啟用簽署與插入委派簽署者 (DS) 記錄之間的等待時間,協助您將上線風險降至最低。
準備啟用DNSSEC簽署
-
監控區域可用性。
您可以監控該區域在您網域名稱中的可用性。這可協助您解決啟用DNSSEC簽署後可能需要退回一步的任何問題。您可以藉由使用查詢日誌記錄,監控具有大部分流量的網域名稱。如需設定查詢日誌記錄的詳細資訊,請參閱 監控 Amazon Route 53。
可以透過 Shell 指令碼或透過第三方服務進行監控。但是,其不應是判斷是否需要回復的唯一信號。您也可能會因為網域名稱不可用,而得到來自客戶的反饋。
-
降低區域的最大值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更改。
-
降低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更改。
-
確保TTL和最SOA小字段更改是有效的。
用GetChange於確定目前為止您的變更已傳播到所有 Route 53 DNS 伺服器。
步驟 2:啟用DNSSEC簽名並創建 KSK
您可以使DNSSEC用 AWS CLI 或在 Route 53 主控台上啟用簽署並建立金鑰簽署金鑰 (KSK)。
當您提供或建立客戶管理的KMS金鑰時,會有幾項要求。如需詳細資訊,請參閱使用客戶管理的金鑰 DNSSEC。
啟用區域簽署之後,請完成下列步驟 (無論您是使用主控台還是CLI):
-
確認區域簽署已生效。
如果您使用 AWS CLI,您可以使用
EnableHostedZoneDNSSEC()
呼叫輸出中的作業識別碼來執行 get-change,或確GetChange定所有 Route 53 DNS 伺服器都在簽署回應 (狀態 =INSYNC
)。 -
至少等待上一個區域的最大值TTL。
等待解析器清除其快取中所有的未簽署記錄。為了實現這一目標,您應該至少等待前一個區域的最大值TTL。在上述
example.com
區域中,等待時間會是 1 天。 -
監控客戶問題報告。
啟用區域簽署後,客戶可能會開始看到與網路裝置和解析器有關的問題。建議的監控期為 2 週。
以下為您可能看到的問題示例:
-
某些網路裝置可能會將回DNS應大小限制在 512 位元組以下,這對於某些已簽署的回應來說太小了。應重新配置這些網絡設備以允許更大的DNS響應大小。
-
有些網路裝置會對DNS回應進行深入檢查,並刪除某些不瞭解的記錄,例如使用的記錄DNSSEC。應重新設定這些裝置。
-
一些客戶的解析器聲稱他們可以接受比其網絡支持更大的UDP響應。您可以測試網路能力並適當地設定解析器。如需詳細資訊,請參閱DNS回覆大小測試伺服器
。
-
復原:呼叫DisableHostedZoneDNSSEC然後復原中的步驟步驟 1:準備啟用DNSSEC簽署。
步驟 3:建立信任鏈
在 Route 53 中啟用託管區域的DNSSEC簽署後,請為託管區域建立信任鏈以完成DNSSEC簽署設定。您可以藉由在父託管區域中建立委派簽署人 (DS) 記錄來完成此任務 (使用 Route 53 提供的資訊)。視網域的註冊位置而定,您可以將記錄新增至 Route 53 或其他網域註冊商中的父託管區域。
建立DNSSEC簽署信任鏈
登入 AWS Management Console 並開啟 Route 53 主控台,位於https://console.aws.amazon.com/route53/
。 -
在瀏覽窗格中,選擇 [託管區域],然後選擇您要為其建立信任DNSSEC鏈的託管區域。您必須先啟用DNSSEC簽署功能。
-
在 [DNSSEC簽署] 索引標籤的 [DNSSEC簽署] 下,選擇 [檢視資訊] 以建立 DS 記錄。
注意
如果您在本節中看不到檢視資訊以建立 DS 記錄,則必須先啟用DNSSEC簽署,然後才能建立信任鏈。選擇 [啟用DNSSEC簽署] 並完成中所述的步驟步驟 2:啟用DNSSEC簽名並創建 KSK,然後返回這些步驟以建立信任鏈。
-
在 Establish a chain of trust (建立信任鏈) 下,選擇 Route 53 registrar (Route 53 註冊商) 或 Another domain registrar (其他網域註冊商),視您的網域註冊位置而定。
-
使用步驟 3提供的值,以為 Route 53 中的父託管區域建立 DS 記錄。如果您的網域名稱不在 Route 53 託管,請使用提供的值在網域註冊商網站上建立 DS 記錄。
-
如果上層區域是透過 Route 53 管理的網域,請依照下列步驟執行:
請確定您設定正確的簽章演算法 (ECDSAP256SHA256和類型 13) 和摘要演算法 (SHA-256 和類型 2)。
如果 Route 53 是您的註冊商,請在 Route 53 主控台中執行以下操作:
-
請注意 Key type (金鑰類型)、Signing algorithm (簽署演算法) 以及 Public key (公有金鑰) 值。在導覽窗格中,選擇 Registered domains (已註冊的網域)。
-
選取網域,然後選擇DNSSEC狀態旁邊的 [管理金鑰]。
-
在 [管理DNSSEC金鑰] 對話方塊中,從下拉式功能表選擇適當的 Route 53 登錄器的金鑰類型和演算法。
-
複製 Route 53 註冊商的 Public key (公有金鑰)。在 [管理DNSSEC金鑰] 對話方塊中,將值貼到 [公開金鑰] 方塊中。
-
選擇新增。
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述範例。 -
-
根據您的網域記錄,等待更新傳播。TTL
如果父區域位於 Route 53 DNS 服務上,父區域擁有者可以透過 GetChangeAPI.
否則,您可以定期探測 DS 記錄的父區域,之後再等待 10 分鐘,以提高 DS 記錄插入已完全傳播的概率。請注意,有些註冊商已有 DS 插入排程,例如,每天一次。
當您在父區域中導入委派簽署人 (DS) 記錄時,已取得 DS 的驗證解析器將開始驗證來自區域的回應。
為確保建立信任的步驟順利進行,請完成以下操作:
-
找到最大 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的最大值。
-
-
等待最大 NS TTL。
在 DS 插入之前,解析器會收到簽署回應,但不會驗證簽章。插入 DS 記錄時,在該區域的 NS 記錄過期前,解析器都看不到該記錄。當解析器重新獲取 NS 記錄時,亦將傳回 DS 記錄。
如果您的客戶在具有不同步時鐘的主機上執行解析器,請確保時鐘在正確時間的 1 小時以內。
完成此步驟後,所有 DNSSEC-aware 解析器將驗證您的區域。
-
請觀察名稱解析。
您應該觀察到,解析器在驗證您的區域方面沒有任何問題。確認您亦將客戶向您報告問題所需要的時間納入考慮。
我們建議監控長達 2 週。
-
(選擇性) 延長 DS 和 NS TTLs。
如果您對設定感到滿意,可以儲存您所做的TTL和SOA變更。請注意,Route 53 TTL 將簽署區域限制為 1 週。如需詳細資訊,請參閱在 Amazon 路線 53 中配置DNSSEC簽名。
如果您可以變更 DSTTL,建議您將其設定為 1 小時。