查看 DNSSEC 金鑰

本頁面說明如何查看網域名稱系統安全性擴充功能 (DNSSEC) 金鑰。

如需 DNSSEC 的概念總覽,請參閱 DNSSEC 總覽

DNSKEY 是包含公開簽署金鑰的 DNS 記錄類型。如要將 DNSSEC 簽署區域遷移至其他 DNS 營運商,可能需要檢視 DNSKEY 記錄。RFC 6781 所述的遷移程序會要求您將區域簽署金鑰 (ZSK) 和金鑰簽署金鑰 (KSK) DNSKEY 從 Cloud DNS 區域匯入其他營運商的區域。

如果您已為區域啟用 DNSSEC,Cloud DNS 會自動管理 DNSSEC 金鑰 (DNSKEY 記錄) 的建立和輪替作業,以及資源記錄數位簽章 (RRSIG) 記錄的區域資料簽署作業。Cloud DNS 不支援 KSK 自動輪替,因為 KSK 輪替目前需要與網域註冊商進行人工手動互動。不過,Cloud DNS 會執行全自動 ZSK 輪替。您可以使用 Google Cloud CLI 或 REST API,查看自動代管的 DNSKEY。

事前準備

查看 DNSSEC 金鑰之前,您必須先建立代管區域為區域啟用 DNSSEC,才能建立 DNSKEY 記錄。

顯示目前的 DNSKEY

如要顯示區域目前的 DNSKEY 記錄,請按照下列步驟操作。

gcloud

在下列 gcloud 指令列範例中,您可以指定 --project 參數,對特定專案執行作業。

如要以 JSON 格式列出所有 DNSKEY,請使用 gcloud dns dns-keys list 指令:

gcloud dns dns-keys list --zone ZONE_NAME

ZONE_NAME 替換成代管區域的名稱。

如要以 JSON 格式顯示指定 DNSKEY 的詳細資料,請使用 gcloud dns dns-keys describe 指令:

gcloud dns dns-keys describe DNSKEY_ID --zone ZONE_NAME

替換下列內容:

  • DNSKEY_ID:您要查看詳細資料的 DNSKEY ID
  • ZONE_NAME:代管區域的名稱

API

如要將所有 DNSKEY 列印至 ResourceRecordSet 集合,請使用 dnsKeys.get 方法,並將要求主體留空:

GET https://dns.googleapis.com/dns/v1/projects/PROJECT/managedZones/ZONE_NAME/dnsKeys

替換下列內容:

  • PROJECT:DNS 專案的名稱或 ID
  • ZONE_NAME:代管區域的名稱

輸出結果大致如下:

{
  "kind": "dns#dnsKeysListResponse",
  "header": {
    "operationId": string
  },
  "dnsKeys": [
    dnsKeys Resource
  ],
  "nextPageToken": string
}

如要以 JSON 格式顯示指定 DNSKEY 的詳細資料,請使用 dnsKeys DNSKEY_ID.get 方法,並將要求主體留空:

GET https://dns.googleapis.com/dns/v1/projects/PROJECT/managedZones/ZONE_NAME/dnsKeys/DNSKEY_ID

替換下列內容:

  • PROJECT:DNS 專案的名稱或 ID
  • ZONE_NAME:代管區域的名稱
  • DNSKEY_ID:您要查看詳細資料的 DNSKEY ID

Python

  from apiclient import errors
  from apiclient.discovery import build

  PROJECT_NAME= 'PROJECT_NAME'
  ZONE_NAME= 'ZONE_NAME'

  try:
    service = build('dns', 'v1')
    response = service.dnskeys().list(project=PROJECT_NAME,
                                      managedZone=ZONE_NAME).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

  try:
    response = service.dnskeys().list(project=PROJECT_NAME,
                                      managedZone=ZONE_NAME,
                                      keyId=KEY_ID).execute()
  except errors.HttpError, error:
    print 'An error occurred: %s' % error

替換下列內容:

  • PROJECT_NAME:DNS 專案的名稱或 ID
  • ZONE_NAME:代管區域的名稱

後續步驟