部署由 Google 管理的区域级证书


本教程介绍如何使用 Certificate Manager 来部署 从区域级 Google 管理的证书连接到区域级外部应用负载平衡器 区域级内部应用负载平衡器

如需将证书部署到区域级外部应用负载均衡器或区域级内部应用负载均衡器,请将证书直接附加到目标代理。

目标

本教程介绍如何完成以下任务:

  • 使用 DNS 创建由受大众信任的 CA 颁发的 Google 管理的证书 使用证书管理器授权。如需创建 Google 管理的区域级证书,您必须使用每个项目的 DNS 授权。

  • 使用目标 HTTPS 代理将证书部署到受支持的负载均衡器。

如需详细了解证书部署流程,请参阅 部署概览

准备工作

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. 您需要使用 Google Cloud CLI 465.0.0 或更高版本来部署证书。要检查您的 gcloud CLI 版本,请运行 以下命令:

    gcloud --version
    
  3. 如需更新 gcloud CLI,请运行以下命令。

    gcloud components update
    
  4. 请确保您拥有以下角色,以便完成本教程中的任务:

    • Certificate Manager Owner:必须拥有此角色才能创建和管理 Certificate Manager 资源。
    • Compute Load Balancer AdminCompute Network Admin:必填 来创建和管理 HTTPS 目标代理。
    • DNS Administrator:如果您要将 Cloud DNS 用作您的 DNS 解决方案。

    详情请参阅以下内容:

创建 Google 管理的区域级证书

完成本部分中的步骤创建 DNS 授权和 引用该 DNS 授权的 Google 管理的证书。

创建 DNS 授权

按照本部分中的说明创建 DNS 授权。如果您要为通配符证书(例如 *.myorg.example.com)创建 DNS 授权,请为父级网域(例如 myorg.example.com)配置 DNS 授权。

对于 Google 管理的区域级证书,DNS 授权类型只能设为 PER_PROJECT_RECORD

gcloud

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --location="LOCATION"

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \
    --location="LOCATION"

替换以下内容:

  • AUTHORIZATION_NAME:DNS 授权的名称。
  • DOMAIN_NAME:您要注册的网域的名称 创建此 DNS 授权。域名必须是完全限定的域名 域名,例如 myorg.example.com
  • LOCATION:您创建 DNS 的位置 授权。

该命令会返回输出,如以下示例所示。使用输出中的 CNAME 记录添加到您的 DNS 配置

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.us-central1.authorize.certificatemanager.goog.
name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com.
type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/us-central1/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

将 CNAME 记录添加到您的 DNS 配置

如果您使用 Google Cloud 管理 DNS,请完成本部分中的步骤。否则,请参阅第三方 DNS 的相关文档 解决方案。

在完成本部分中的步骤之前,请确保您已 创建了一个公共 DNS 区域

创建 DNS 授权后,gcloud CLI 命令会返回相应的 CNAME 记录。您必须将此 CNAME 记录添加到目标网域的 DNS 区域中的 DNS 配置,如下所示:

gcloud

  1. 发起 DNS 记录事务:

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME 替换为目标 DNS 的名称 可用区。

  2. 将 CNAME 记录添加到目标 DNS 区域:

    gcloud dns record-sets transaction add CNAME_RECORD_DATA \
      --name="CNAME_RECORD_NAME" \
      --ttl="30" \
      --type="CNAME" \
      --zone="DNS_ZONE_NAME"
    

    替换以下内容:

    • CNAME_RECORD_DATA:CNAME 的完整数据值 (创建 相应的 DNS 授权。
    • CNAME_RECORD_NAME:用于创建相应 DNS 授权的 gcloud CLI 命令所返回的 CNAME 记录的完整名称值。
    • DNS_ZONE_NAME:目标 DNS 区域的名称。

    请参阅以下示例:

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.us-central1.authorize.certificatemanager.goog. \
      --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com" \
      --ttl="30" \
      --type="CNAME" \
      --zone="example-com"
    
  3. 运行 DNS 记录事务以保存更改:

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME 替换为目标 DNS 区域的名称。

创建引用 DNS 授权的 Google 管理的区域性证书

要创建引用 DNS 授权的 Google 管理的证书,请执行以下操作: 创建过滤器,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往证书管理器页面。

    前往“证书管理器”

  2. 在随即显示的页面上,选择证书标签页。

  3. 点击添加证书

  4. 输入证书的名称

    该名称在项目中必须是唯一的。

  5. 可选:输入证书的说明。说明 可帮助您稍后识别特定证书。

  6. 对于位置,选择区域级

  7. 区域列表中,选择一个区域。

  8. 证书类型部分,选择创建 Google 管理的证书

  9. 对于证书授权机构类型,请选择公共

  10. 指定证书的域名。输入以逗号分隔的目标网域列表。此外,每个域名都必须是完全限定域名,例如 myorg.example.com

  11. 授权类型中,选择 DNS 授权。如果 域名具有关联的 DNS 授权,系统会自动获取该授权。如果域名没有关联的 DNS 授权,请执行以下操作:

    1. 点击创建缺失的 DNS 授权以显示 创建 DNS 授权对话框。
    2. DNS 授权名称字段中,指定 DNS 授权名称。
    3. 点击创建 DNS 授权。 验证 DNS 名称是否与域名相关联。
  12. 指定要与证书关联的标签。您可以添加 多个标签(如果需要)。要添加标签,请点击 添加标签按钮,然后为标签指定 keyvalue

  13. 点击创建。确认新证书是否显示在证书列表中。

gcloud

运行以下命令:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains=DOMAIN_NAME \
    --dns-authorizations=AUTHORIZATION_NAME \
    --location=LOCATION

替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称。
  • DOMAIN_NAME:证书的目标网域。 星号圆点前缀 (*.) 表示通配符证书。通过 域名必须是完全限定域名,例如 myorg.example.com
  • AUTHORIZATION_NAME:您为此证书创建的 DNS 授权的名称。
  • LOCATION:创建 Google 管理的证书。

如需创建带有通配符域名的 Google 管理的证书,请使用 。答 通配符域名证书涵盖指定网域的所有一级子网域。

gcloud certificate-manager certificates create CERTIFICATE_NAME \
   --domains="*.DOMAIN_NAME,DOMAIN_NAME" \
   --dns-authorizations=AUTHORIZATION_NAME \
   --location=LOCATION

替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称。
  • DOMAIN_NAME:证书的目标网域。通过 *. 前缀表示通配符证书。域名必须是 完全限定域名,如 myorg.example.com
  • AUTHORIZATION_NAME:您为此证书创建的 DNS 授权的名称。
  • LOCATION:创建 Google 管理的证书。

验证证书是否处于有效状态

在将证书部署到负载均衡器之前,请使用以下命令验证证书本身是否处于活跃状态。系统最多可能需要数小时 证书状态更改为 ACTIVE

gcloud certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION

替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称。
  • LOCATION:您创建 Google 代管的证书的位置。

输出类似于以下内容:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
  -  projects/my-project/locations/us-central1/dnsAuthorizations/myAuth
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/us-central1/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

将证书部署到负载均衡器

如需将 Google 管理的证书部署到负载均衡器,请完成以下步骤。

在继续执行本部分中的任务之前,请确保您已完成 “管理”部分中列出的任务 创建 Google 管理的区域级证书 部分。

如需将区域级 Google 管理的证书部署到区域级外部应用负载均衡器或区域级内部应用负载均衡器,请将证书直接附加到目标代理,以便部署该证书。

将证书直接附加到目标代理

如需将证书直接附加到代理,请运行以下命令:

gcloud compute target-https-proxies update PROXY_NAME \
    --url-map=URL_MAP \
    --region=REGION \
    --certificate-manager-certificates=CERTIFICATE_NAME

替换以下内容:

  • PROXY_NAME:代理的唯一名称。
  • URL_MAP:您在创建网址映射时 创建了负载均衡器
  • REGION:要在其中创建 HTTPS 目标代理的区域。
  • CERTIFICATE_NAME:证书的名称。

清理

如需还原您在本教程中所做的更改,请完成以下步骤:

  1. 删除 Google 管理的证书:
    gcloud certificate-manager certificates delete CERTIFICATE_NAME
       --location=LOCATION
    
    替换以下内容:
  • CERTIFICATE_NAME:证书的名称。
  • LOCATION:您创建 Google 代管的证书的位置。
  1. 删除 DNS 授权:
    gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
       --location=LOCATION
    
    替换以下内容:
  • AUTHORIZATION_NAME:DNS 授权的名称。
  • LOCATION:您创建 DNS 授权的位置。

后续步骤