查看 DNSSEC 键

本页面介绍如何查看域名系统安全扩展 (DNSSEC) 密钥。

如需 DNSSEC 的概念性概览,请参阅 DNSSEC 概览

DNSKEY 是包含公开签名密钥的 DNS 记录类型。 如果要将 DNSSEC 签名的可用区迁移到另一个 DNS 运营商,则可能需要查看 DNSKEY 记录。根据 RFC 6781 中的迁移流程,您需要将 Cloud DNS 地区中的地区签名密钥 (ZSK) 和密钥签名密钥 (KSK) 导入其他运营商的可用区。

为某一地区启用 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:代管可用区的名称

后续步骤