使用 Certificate Authority Service 部署区域 Google 管理的证书


本教程介绍如何使用 Certificate Manager 将带有 CA Service 的区域级 Google 管理证书部署到区域级外部应用负载平衡器或区域级内部应用负载平衡器。

目标

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

  • 使用 Certificate Manager 通过 CA Service 创建 Google 管理的证书。
  • 使用目标 HTTPS 代理将证书部署到受支持的负载均衡器。

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

准备工作

  1. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  2. 请确保您拥有以下角色才能完成本教程中的任务:

    • Certificate Manager Owner:创建和管理 Certificate Manager 资源所需的权限。
    • Compute Load Balancer Admin:创建和管理 HTTPS 目标代理时具有此权限。
    • CA Service Admin:在 CA Service 中执行操作所需的权限。

    详情请参阅以下内容:

  3. 启用 Certificate Manager API

  4. 启用 CA Service API

  5. 创建 CA 池。您必须在此 CA 池中创建并启用至少一个 CA。

配置 CA Service 与证书管理器的集成

按如下方式配置 Certificate Manager 以与 CA Service 集成:

  1. 在目标 Google Cloud 项目中创建 Certificate Manager 服务帐号:

    gcloud beta services identity create \
        --service=certificatemanager.googleapis.com \
        --project=PROJECT_ID
    

    PROJECT_ID 替换为目标 Google Cloud 项目的 ID。

该命令将返回已创建的服务身份的名称,如以下示例所示:

service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
  1. 在目标 CA 池中向 Certificate Manager 服务帐号授予 CA Service Certificate Requester 角色,如下所示:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --location LOCATION \
        --member "serviceAccount:SERVICE_ACCOUNT" \
        --role roles/privateca.certificateRequester
    

    请替换以下内容:

    • CA_POOL:目标 CA 池的 ID。
    • LOCATION:目标 Google Cloud 位置。您必须指定与 CA 池、证书颁发配置资源和托管式证书相同的位置。
    • SERVICE_ACCOUNT:您在第 1 步中创建的服务帐号的全名。
  2. 为 CA 池创建证书颁发配置资源:

    gcloud beta certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL \
        --location=LOCATION> \
        [--lifetime=CERTIFICATE_LIFETIME] \
        [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \
        [--key-algorithm=KEY_ALGORITHM]
    

    请替换以下内容:

    • ISSUANCE_CONFIG_NAME:证书颁发配置资源的唯一名称。
    • CA_POOL:您要分配给此证书颁发配置资源的 CA 池的完整资源路径和名称。
    • LOCATION:目标 Google Cloud 位置。您必须指定与 CA 池、证书颁发配置资源和托管式证书相同的位置。
    • CERTIFICATE_LIFETIME:证书的生命周期(以天为单位)。有效值为 21 至 30 天,采用标准时长格式。默认值为 30 天 (30D)。此设置是可选的。
    • ROTATION_WINDOW_PERCENTAGE:触发续订时证书有效期所占的百分比。默认值为 66%。您必须设置相对于证书生命周期的轮替窗口百分比,以确保证书在证书颁发后至少 7 天以及到期前至少 7 天进行续订。此设置是可选的。
    • KEY_ALGORITHM:用于生成私钥的加密算法。有效值为 ecdsa-p256rsa-2048。 默认值为 rsa-2048。 此设置是可选的。

如需详细了解证书颁发配置资源,请参阅管理证书颁发配置

创建 Google 管理的区域级证书

使用在上一步中创建的证书颁发配置资源,创建由 CA 服务颁发的 Google 管理的区域证书:

控制台

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

    前往“证书管理器”

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

  3. 点击添加证书

  4. 输入证书的名称

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

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

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

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

  8. 对于证书类型,选择创建 Google 管理的证书

  9. 对于证书授权机构类型,选择专用

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

  11. 对于证书颁发配置,请选择引用目标 CA 池的证书颁发配置资源的名称。

  12. 指定要与证书关联的标签。如果需要,您可以添加多个标签。如需添加标签,请点击 添加标签按钮,然后为标签指定 keyvalue

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

gcloud

运行以下命令:

gcloud beta certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config="ISSUANCE_CONFIG_NAME" \
    --location="LOCATION"

请替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称。
  • DOMAIN_NAMES:此证书的目标网域列表(以英文逗号分隔)。每个域名都必须是完全限定域名,例如 myorg.example.com
  • ISSUANCE_CONFIG_NAME:引用目标 CA 池的证书颁发配置资源的名称。
  • LOCATION:目标 Google Cloud 位置。您必须指定与 CA 池、证书颁发配置资源和托管式证书相同的位置。

API

certificates.create 方法发出 POST 请求以创建证书,如下所示:

POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME"
{
 name: "/projects/example-project/locations/LOCATION/certificates/my-cert",
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
 },
}

请替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • LOCATION:目标 Google Cloud 位置。您必须指定与 CA 池、证书颁发配置资源和托管式证书相同的位置。
  • CERTIFICATE_NAME:证书的唯一名称。
  • DOMAIN_NAME:此证书的目标网域。 域名必须是完全限定域名,例如 example.comwww.example.com
  • ISSUANCE_CONFIG_NAME:引用目标 CA 池的证书颁发配置资源的名称。

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

验证证书是否处于活跃状态

在将证书部署到负载均衡器之前,请使用以下命令验证证书本身是否处于活跃状态。证书状态可能需要几分钟才能更改为 ACTIVE

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

请替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称。
  • LOCATION:目标 Google Cloud 位置。您必须指定与 CA 池、证书颁发配置资源和托管式证书相同的位置。

该命令会返回类似于以下内容的输出:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
domains:
-   myorg.example.com
issuanceConfig: projects/myproject/locations/mylocation/issuanceConfigs/myissuanceConfig
state: ACTIVE
name: projects/myproject/locations/mylocation/certificates/mycertificate
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

将 Google 管理的区域级证书部署到负载均衡器

如需部署 Google 管理的区域级证书,请创建 HTTPS 目标代理并将证书附加到该代理。

创建 HTTPS 目标代理

如需创建 HTTPS 目标代理并附加证书,请运行以下命令:

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

请替换以下内容:

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

如需验证是否已创建目标代理,请运行以下命令:

gcloud compute target-https-proxies list

创建转发规则

设置转发规则并完成负载均衡器设置。

清理

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

  1. 删除 Google 管理的证书:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
        --location=LOCATION
    

请替换以下内容:

  • CERTIFICATE_NAME:证书的名称
  • LOCATION:目标 Google Cloud 位置
  1. 删除证书颁发配置资源:

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
        --location=LOCATION
    

请替换以下内容:

  • CERTIFICATE_NAME:证书的名称
  • LOCATION:目标 Google Cloud 位置
  1. 按照删除 CA 池中的说明删除 CA 池。

    请注意,如需停用您在证书颁发配置资源中引用的 CA 池中启用的最后一个 CA,或者要完全删除引用的 CA 池,您必须先删除引用该 CA 池的每个证书颁发配置资源。

问题排查

如需了解问题排查步骤,请参阅与 CA 服务实例颁发的证书相关的问题

后续步骤