借助 DNS 授权,您可以证明自己拥有Google 管理的证书所对应的网域。创建 Google 管理的证书时,可以指定一个或多个 DNS 授权,用于预配和续订。
本页面介绍了如何创建和管理 DNS 授权,以便与 Google 管理的证书搭配使用。
如需了解详情,请参阅网域授权。
创建 DNS 授权
DNS 授权仅涵盖单个域名。您必须为要用于目标证书的每个域名单独创建 DNS 授权。
如果您要为通配符证书(例如 *.myorg.example.com)创建 DNS 授权,请为父网域(例如 myorg.example.com)配置 DNS 授权。
如需跨多个项目独立管理证书,您可以使用 PER_PROJECT_RECORD DNS 授权。Certificate Manager 可以在 Google Cloud中独立处理每个项目的证书签发和管理。您在项目中使用的 DNS 授权和证书是独立的,不会与其他项目中的授权和证书互动。
控制台
您可以在创建证书时创建 DNS 授权或附加现有 DNS 授权。如需了解详情,请参阅创建引用 DNS 授权的 Google 管理的证书。
gcloud
您可以根据自己的需求创建以下任一类型的 DNS 授权:FIXED_RECORD 或 PER_PROJECT_RECORD。如需了解详情,请参阅 DNS 授权。
FIXED_RECORD DNS 授权
如需创建 FIXED_RECORD DNS 授权,请使用以下 gcloud certificate-manager
dns-authorizations create 命令:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--type=[FIXED_RECORD] \
[--location="LOCATION"]
替换以下内容:
AUTHORIZATION_NAME:DNS 授权的名称。DOMAIN_NAME:您要为其创建此 DNS 授权的目标网域的名称。域名必须是完全限定域名,例如myorg.example.com。LOCATION:您创建 DNS 授权的目标 Google Cloud 位置。
创建 FIXED_RECORD DNS 授权后,请使用 gcloud certificate-manager dns-authorizations describe 命令对其进行验证:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
输出类似于以下内容:在输出中,找到 dnsResourceRecord 行,然后获取要添加到 DNS 配置中的 CNAME 记录(data、name 和 type)。
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.myorg.example.com. type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
PER_PROJECT_RECORD DNS 授权
如需创建 PER_PROJECT_RECORD DNS 授权,请使用以下 gcloud certificate-manager dns-authorizations create 命令:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--type=PER_PROJECT_RECORD \
[--location="LOCATION"]
替换以下内容:
AUTHORIZATION_NAME:DNS 授权的名称。DOMAIN_NAME:您要为其创建此 DNS 授权的目标网域的名称。域名必须是完全限定域名,例如myorg.example.com。LOCATION:您创建 DNS 授权的目标 Google Cloud 位置。
创建 PER_PROJECT_RECORD DNS 授权后,请使用 gcloud certificate-manager dns-authorizations describe 命令对其进行验证:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
输出类似于以下内容:在输出中找到 dnsResourceRecord 部分。找到 CNAME 记录,并将该记录的详细信息(data、name 和 type)添加到您的 DNS 配置中。
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
如需创建 DNS 授权,您可以使用 google_certificate_manager_dns_authorization 资源。
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
API
如需创建 DNS 授权,请向 dnsAuthorizations.create 方法发出 POST 请求:
POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
"domain": "DOMAIN_NAME",
"type": "PER_PROJECT_RECORD" //optional
}
替换以下内容:
PROJECT_ID: Google Cloud 项目的 ID。LOCATION:您创建 DNS 授权的目标 Google Cloud 位置。对于全球位置,请使用global。AUTHORIZATION_NAME:DNS 授权的名称。DOMAIN_NAME:您要为其创建此 DNS 授权的目标网域的名称。 域名必须是完全限定域名,例如myorg.example.com。
将 CNAME 记录添加到您的 DNS 配置
如果您使用第三方 DNS 解决方案来管理 DNS,请参阅其文档,了解如何将 CNAME 记录添加到 DNS 配置。如果您使用Google Cloud 管理 DNS,请完成本部分中的步骤。
控制台
要创建记录集,请按以下步骤操作:
在 Google Cloud 控制台中,前往 DNS 区域页面。
点击要添加记录的 DNS 区域的名称。
在区域详情页面上,点击添加标准。
在创建记录集页面的 DNS 名称字段中,输入 DNS 区域的子网域。
输入子域名时,请确保子域名(包括 DNS 名称字段中显示的灰显文本)与
gcloud certificate-manager dns-authorizations describe命令的输出中显示的dnsResourceRecord.name字段的完整值一致。请参见以下示例:
如果
dnsResourceRecord.name字段值为_acme-challenge.myorg.example.com.,且“DNS 名称”字段中的灰显文本为.example.com.,则输入_acme-challenge.myorg。如果
dnsResourceRecord.name字段值为_acme-challenge.myorg.example.com.,并且“DNS 名称”字段中的灰显文本为.myorg.example.com.,则输入_acme-challenge。如果
dnsResourceRecord.name字段的值为_acme-challenge_ujmmovf2vn55tgye.myorg.example.com.,并且DNS 名称字段中的灰显文本为.myorg.example.com.,则输入_acme-challenge_ujmmovf2vn55tgye。
在资源记录类型字段中,选择 CNAME。
在 TTL 字段中,输入一个正数值表示资源记录的生存时间,即该资源记录可缓存的时间期限。
从 TTL 单位列表中,选择时间单位,例如
30 minutes。在规范名称字段中,输入
dnsResourceRecord.data字段的完整值,如gcloud certificate-manager dns-authorizations describe命令的输出中所示。要输入其他信息,请点击添加一项。
点击创建。
gcloud
创建 DNS 授权后,gcloud CLI 命令会返回相应的 CNAME 记录。如需将 CNAME 记录添加到目标网域的 DNS 区域中的 DNS 配置,请按以下步骤操作:
发起 DNS 记录事务:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
将
DNS_ZONE_NAME替换为目标 DNS 区域的名称。将 CNAME 记录添加到目标 DNS 区域:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"替换以下内容:
CNAME_RECORD:用于创建相应 DNS 授权的 Google Cloud CLI 命令所返回的 CNAME 记录的完整数据值。VALIDATION_SUBDOMAIN_NAME:DNS 区域的前缀子网域,例如_acme-challenge。您可以按照创建 DNS 授权中的说明,从gcloud certificate-manager dns-authorizations describe命令日志中复制该名称。DOMAIN_NAME:目标网域的名称。网域名称必须是完全限定域名,例如myorg.example.com。您还必须在目标域名后添加尾随英文句点。DNS_ZONE_NAME:目标 DNS 区域的名称。
如需详细了解
FIXED_RECORD和PER_PROJECT_RECORDDNS 授权之间的区别,请参阅以下示例。这两个示例的唯一区别在于--name标志的值。FIXED_RECORD DNS 授权
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"PER_PROJECT_RECORD DNS 授权
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"运行 DNS 记录事务以保存更改:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
将
DNS_ZONE_NAME替换为目标 DNS 区域的名称。
Terraform
如需将 CNAME 记录添加到您的 DNS 配置,您可以使用 google_dns_record_set 资源。
更新 DNS 授权
更新 DNS 授权时,您可以执行以下操作:
- 指定新标签
- 指定新说明
gcloud
如需更新 DNS 授权,请使用 certificate-manager dns-authorizations
update 命令:
gcloud certificate-manager dns-authorizations update AUTHORIZATION_NAME \
[--update-labels="LABELS"] \
[--description="DESCRIPTION"] \
[--location="LOCATION"]
替换以下内容:
AUTHORIZATION_NAME:DNS 授权的名称。LABELS:相应 DNS 授权的标签。此标志是可选标志。DESCRIPTION:相应 DNS 授权的说明。 此标志不是必需的。LOCATION:目标 Google Cloud 位置。默认位置是global。
API
通过向 dnsAuthorizations.patch 方法发出 PATCH 请求来更新 DNS 授权,如下所示:
PATCH /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME?updateMask=labels,description"
{
description: "DESCRIPTION",
labels: { "LABEL_KEY": "LABEL_VALUE" }
}
替换以下内容:
PROJECT_ID: Google Cloud 项目的 ID。LOCATION:目标 Google Cloud 位置。默认位置是global。AUTHORIZATION_NAME:DNS 授权的名称。DESCRIPTION:一个可选字段,用于指定此 DNS 授权的说明。LABEL_KEY:应用于此 DNS 授权的标签键。LABEL_VALUE:应用于此 DNS 授权的标签值。
列出 DNS 授权
您可以查看项目的所有 DNS 授权及其详细信息。
gcloud
如需列出 DNS 授权,请使用 certificate-manager dns-authorizations
list 命令:
gcloud certificate-manager dns-authorizations list \
--filter="FILTER" \
--page-size="PAGE_SIZE" \
--limit="LIMIT" \
--sort-by="SORT_BY" \
[--location="LOCATION"]
替换以下内容:
FILTER:一种表达式,用于将返回的结果限制为特定值。例如,您可以按以下条件过滤结果:
- 域名:
--filter='domain=myorg.example.com' - 标签和创建时间:
--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'
如需查看更多可与 Certificate Manager 搭配使用的过滤条件示例,请参阅 Cloud Key Management Service 文档中的对列表结果进行排序和过滤。
- 域名:
PAGE_SIZE:每页要返回的结果数。LIMIT:要返回的结果数的上限。SORT_BY:一个以英文逗号分隔的name字段列表,用于指定返回结果的排序方式。默认排序顺序是升序;如需降序排序,请在相应字段前面加上波浪号 (~)。LOCATION:目标 Google Cloud 位置。如需列出所有区域的 DNS 授权,请使用-作为值。默认值为-。 此标志不是必需的。
API
通过向 dnsAuthorizations.list 方法发出 GET 请求,列出所有已配置的 DNS 授权,如下所示:
GET /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY
替换以下内容:
PROJECT_ID: Google Cloud 项目的 ID。LOCATION:目标 Google Cloud 位置。如需查看所有位置的所有 DNS 授权,请指定单个连字符 (-)。FILTER:一种表达式,用于将返回的结果限制为特定值。例如,您可以按以下条件过滤结果:
- 域名:
--filter='domain=myorg.example.com' - 标签和创建时间:
--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'
- 域名:
PAGE_SIZE:每页要返回的结果数。SORT_BY:一个以英文逗号分隔的name字段列表,用于指定返回结果的排序方式。默认排序顺序是升序;如需降序排序,请在相应字段前面加上波浪号 (~)。
删除 DNS 授权
如需删除已分配给 Google 管理的证书的 DNS 授权,请先删除证书,然后再删除 DNS 授权。
gcloud
如需删除 DNS 授权,请使用 certificate-manager dns-authorizations
delete 命令:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME \
[--location="LOCATION"]
替换以下内容:
AUTHORIZATION_NAME:DNS 授权的名称。LOCATION:目标 Google Cloud 位置。默认位置是global。
API
如需删除 DNS 授权,请按如下方式向 dnsAuthorizations.delete 方法发出 DELETE 请求:
DELETE /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME
替换以下内容:
PROJECT_ID: Google Cloud 项目的 ID。LOCATION:目标 Google Cloud 位置。默认位置是global。AUTHORIZATION_NAME:DNS 授权的名称。