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


本教程介绍如何使用 Certificate Manager 来部署 由 Google 管理且具有 CA Service 的区域级证书连接到区域级外部应用负载平衡器,或者 区域级内部应用负载平衡器

目标

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

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

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

准备工作

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

    Go to project selector

  2. 请确保您拥有以下角色,以便完成本 教程:

    • Certificate Manager Owner:创建证书和 管理 Certificate Manager 资源。
    • Compute Load Balancer Admin:创建和管理 HTTPS 需要 目标代理。
    • CA 服务管理员:需要在其中执行操作 CA Service。

    详情请参阅以下内容:

  3. 启用 Certificate Manager API

  4. 启用 CA Service API

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

配置 CA Service 与 Certificate Manager 的集成

配置证书管理器 CA Service,如下所示:

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

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

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

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

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 步中创建的应用 ID。
  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 管理的区域级证书

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

控制台

  1. 在 Google Cloud 控制台中,前往 Certificate Manager 页面。

    前往“证书管理器”

  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

通过向 POST 请求创建证书 certificates.create 方法,如下所示:

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 管理的证书:

    控制台

    1. 在 Google Cloud 控制台中,前往 Certificate Manager 页面。

      前往“证书管理器”

    2. Certificates(证书)标签页上,选中 证书。

    3. 点击删除

    4. 在显示的对话框中,点击删除进行确认。

    gcloud

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

    替换以下内容:

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

    控制台

    1. 在 Google Cloud 控制台中,前往 Certificate Manager 页面。

      前往“证书管理器”

    2. Issuance Configs(发布配置)标签页上,选中 发布配置。

    3. 点击删除

    4. 在显示的对话框中,点击删除进行确认。

    gcloud

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

    替换以下内容:

    • ISSUANCE_CONFIG_NAME:颁发的名称 配置
    • LOCATION:目标 Google Cloud 位置
  3. 按照删除 CA 中所述删除 CA 池 池

    请记住,如需停用您在 CA 池中启用的最后一个 CA 或删除引用的 总共 CA 池,您必须先删除引用该 CA 池的每个证书颁发配置资源。

问题排查

有关故障排除步骤,请参阅与 CA Service 实例

后续步骤