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


本教程介绍了如何使用 Certificate Manager 将由 Certificate Authority Service 管理的全球 Google 证书部署到跨区域内部应用负载平衡器。

如果您想部署到全球外部负载平衡器或区域负载平衡器,请参阅以下内容:

目标

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

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

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 启用 CA Service API
  13. 创建 CA 池。您必须在此 CA 池中创建并启用至少一个 CA。

在按照本教程的步骤操作之前,您需要记下以下内容:

  • 您使用 Certificate Authority Service 创建的证书不受公众信任。如需颁发可被公众信任的证书,请使用 DNS 授权负载平衡器授权创建证书。
  • 如果目标 CA 池中有效的证书颁发政策,证书预配可能会因以下任一原因而失败:

    • 证书颁发政策已屏蔽请求的证书。在这种情况下,由于证书尚未签发,因此系统不会向您收费。
    • 该政策对证书应用了 Certificate Manager 不支持的更改。在这种情况下,由于证书已颁发,即使它与证书管理器不完全兼容,您也需要支付相应费用。
  • 全球 Google 管理的 TLS 证书可配置为从任何地区的 CA 池颁发。

所需的角色

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

  • Certificate Manager Owner (roles/certificatemanager.owner)

    创建和管理 Certificate Manager 资源所必需。

  • Compute Load Balancer Admin (roles/compute.loadBalancerAdmin) 或 Compute Network Admin (roles/compute.networkAdmin)

    必须拥有此角色才能创建和管理 HTTPS 目标代理。

  • CA Service Admin (roles/privateca.admin)

    必须具备此权限才能在 CA 服务中执行操作。

详情请参阅以下内容:

创建负载均衡器

本教程假定您已创建并配置了负载平衡器的后端、健康检查、后端服务和网址映射。记下网址映射的名称,因为本教程后面的部分需要它。

如果您尚未创建跨区域内部应用负载平衡器,请参阅设置具有虚拟机实例组后端的跨区域内部应用负载平衡器

配置 CA Service 与 Certificate Manager 的集成

如需将 CA 服务与证书管理器集成,请按以下步骤操作:

  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
    
  2. 向 Certificate Manager 服务账号授予目标 CA 池中的 CA Service Certificate Requester 角色 (roles/privateca.certificateRequester):

    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 位置。
    • SERVICE_ACCOUNT:您在第 1 步中创建的服务账号的完整名称。
  3. 为 CA 池创建证书颁发配置资源:

    控制台

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

      前往 Certificate Manager

    2. 签发配置标签页上,点击创建

    3. 名称字段中,为证书颁发配置输入一个具有唯一性的名称。

    4. 可选:在说明字段中,输入发行配置的说明。

    5. 位置部分,选择全球

    6. 可选:在有效期字段中,以天为单位指定已颁发证书的有效期。该值必须介于 21 天到 30 天之间(包括这两个数值)。

    7. 可选:在轮替期限百分比中,指定证书续订流程开始时所占生命周期的百分比。如需查找有效值的范围,请参阅生命周期和轮替期百分比

    8. 可选:从密钥算法列表中,选择生成私钥时要使用的密钥算法。

    9. CA 池列表中,选择要分配给此证书颁发配置资源的 CA 池的名称。

    10. 标签字段中,指定要与证书关联的标签。如需添加标签,请点击 添加标签,然后为标签指定键和值。

    11. 点击创建

    gcloud

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL
    

    替换以下内容:

    • ISSUANCE_CONFIG_NAME:证书颁发配置资源的名称。
    • CA_POOL:您要分配给此证书颁发配置资源的 CA 池的完整资源路径和名称。

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

创建由 CA Service 实例颁发的 Google 管理的证书

如需创建由 CA Service 实例颁发的 Google 管理的证书,请执行以下操作:

控制台

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

    前往 Certificate Manager

  2. 证书标签页上,点击添加证书

  3. 证书名称字段中,为证书输入一个唯一名称。

  4. 可选:在说明字段中,输入证书的说明。您可以通过说明来识别证书。

  5. 位置部分,选择全球

  6. 对于范围,选择所有地区

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

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

  9. 网域名称字段中,指定证书的域名(以英文逗号分隔)列表。每个域名都必须是完全限定域名,例如 myorg.example.com

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

  11. 标签字段中,指定要与证书关联的标签。如需添加标签,请点击 添加标签,然后为标签指定键和值。

  12. 点击创建

    新证书会显示在证书列表中。

gcloud

如需使用 Certificate Authority Service 创建跨区域 Google 管理的证书,请使用带有 issuance-config--scope 标志的 certificate-manager certificates create 命令

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME \
    --scope=all-regions

替换以下内容:

  • CERTIFICATE_NAME:证书的名称。
  • DOMAIN_NAME:目标网域的名称。域名必须是完全限定域名,例如 myorg.example.com
  • ISSUANCE_CONFIG_NAME:引用目标 CA 池的证书颁发配置资源的名称。

API

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

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
  "scope": "ALL_REGIONS"
 }
}

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_NAME:证书的名称。
  • DOMAIN_NAME:目标网域的名称。域名必须是完全限定域名,例如 myorg.example.com
  • ISSUANCE_CONFIG_NAME:引用目标 CA 池的证书颁发配置资源的名称。

验证证书状态

在将证书部署到负载平衡器之前,请验证证书是否处于有效状态。证书状态可能需要几分钟才能更改为 ACTIVE

控制台

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

    前往 Certificate Manager

  2. 证书标签页中,查看证书的状态列。

gcloud

如需验证证书的状态,请运行以下命令:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

CERTIFICATE_NAME 替换为目标 Google 管理的证书的名称。

输出类似于以下内容:

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

如需了解更多问题排查步骤,请参阅Certificate Manager 问题排查

将证书部署到负载平衡器

如需部署全局 Google 管理的证书,请将其直接附加到目标代理。

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

您可以将证书附加到新的目标代理或现有目标代理。

如需将证书附加到新的目标代理,请使用 gcloud compute target-https-proxies create 命令

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

替换以下内容:

  • PROXY_NAME:目标代理的名称。
  • URL_MAP:网址映射的名称。您在创建负载平衡器时创建了网址映射。
  • CERTIFICATE_NAME:证书的名称。

如需将证书附加到现有目标 HTTPS 代理,请使用 gcloud compute target-https-proxies update 命令。如果您不知道现有目标代理的名称,请前往目标代理页面,并记下目标代理的名称。

gcloud compute target-https-proxies update PROXY_NAME \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

创建或更新目标代理后,请运行以下命令进行验证:

gcloud compute target-https-proxies list

对 CA Service 颁发的证书进行问题排查

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

清理

为避免系统因本教程中使用的资源而向您的 Google Cloud 账号收取费用,请将这些资源删除。

  1. 删除负载平衡器及其资源。

    请参阅清理负载均衡设置

  2. 删除 Google 托管的证书:

    控制台

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

      前往 Certificate Manager

    2. 证书标签页上,选中相应证书的复选框。

    3. 点击删除

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

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    CERTIFICATE_NAME 替换为目标证书的名称。

  3. 删除证书颁发配置资源:

    控制台

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

      前往 Certificate Manager

    2. Issuance Configs 标签页上,选中证书签发配置资源对应的复选框。

    3. 点击删除

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

    gcloud

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
    

    ISSUANCE_CONFIG_NAME 替换为目标证书颁发配置资源的名称。

  4. 删除 CA 池。

    如需删除 CA 池,或停用证书颁发配置资源引用的 CA 池中最后启用的 CA,请删除引用该 CA 池的所有证书颁发配置。如需了解详情,请参阅删除 CA 池

后续步骤