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


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

目标

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

  • 使用 Certificate Manager 通过 CA Service 创建 Google 管理的证书。
  • 使用目标 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 Service Admin:必须拥有此角色才能在 CA Service 中执行操作。

    详情请参阅以下内容:

  3. 启用 Certificate Manager API

  4. 启用 CA Service API

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

配置 CA Service 与 Certificate Manager 的集成

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

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

    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 步中创建的应用 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. 证书标签页上,选中相应证书的复选框。

    3. 点击删除

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

    gcloud

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

    替换以下内容:

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

    控制台

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

      前往 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 实例

后续步骤