部署 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 授权。如果您要创建 通配符证书的 DNS 授权,例如 *.myorg.example.com 为父网域配置 DNS 授权,例如 myorg.example.com

gcloud

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type=PER_PROJECT_RECORD \
    --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:CNAME 的全名值 (创建 相应的 DNS 授权。
    • 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 控制台中,前往 Certificate Manager 页面。

    前往“证书管理器”

  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 授权的位置。

后续步骤