本教程介绍如何使用 Certificate Manager 来部署 由 Google 管理且具有 CA Service 的区域级证书连接到区域级外部应用负载平衡器,或者 区域级内部应用负载平衡器
目标
本教程介绍如何完成以下任务:
- 使用 Certificate Manager 通过 CA Service 创建 Google 管理的证书。
- 使用目标 HTTPS 将证书部署到受支持的负载均衡器 代理
如需详细了解证书部署流程,请参阅部署概览。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
请确保您拥有以下角色,以便完成本教程中的任务:
- Certificate Manager Owner:创建和 管理 Certificate Manager 资源。
- Compute Load Balancer Admin:创建和管理 HTTPS 需要 目标代理。
- CA Service Admin:必须拥有此角色才能在 CA Service 中执行操作。
详情请参阅以下内容:
- 角色和权限: 证书管理器
- Compute Engine 的 Compute Engine IAM 角色和权限
- CA Service 的权限和角色
创建 CA 池。您必须创建并启用 此 CA 池中至少有一个 CA。
配置 CA Service 与 Certificate Manager 的集成
请按如下方式配置 Certificate Manager 以与 CA Service 集成:
在目标中创建 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
向目标 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。
为 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-p256
或rsa-2048
。 默认值为rsa-2048
。 此设置是可选的。
如需详细了解证书颁发配置资源,请参阅管理证书颁发配置。
创建 Google 管理的区域级证书
创建由 Google 管理且 使用证书颁发配置资源的 CA 服务 在上一步中创建的项目:
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在随即显示的页面上,选择证书标签页。
点击添加证书。
输入证书的名称。
该名称在项目中必须是唯一的。
可选:输入证书的说明。说明 可帮助您稍后识别特定证书。
在位置部分,选择区域级。
从区域列表中,选择一个区域。
对于证书类型,选择创建 Google 管理的证书。
对于证书授权机构类型,选择不公开。
指定证书的域名。输入以逗号分隔的目标网域列表。此外,每个域名都必须是完全限定域名,例如
myorg.example.com
。对于证书签发配置,选择引用目标 CA 池的证书签发配置资源的名称。
指定要与证书关联的标签。如果需要,您可以添加多个标签。如需添加标签,请点击 add_box 添加标签按钮,并为标签指定
key
和value
。点击创建。确认新证书是否显示在证书列表中。
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.com
、www.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
创建转发规则
设置转发规则并完成负载均衡器的设置。
- 如果您使用的是区域级外部应用负载平衡器,请参阅 设置具有虚拟机实例组后端的区域级外部应用负载平衡器。
- 如果您使用的是区域级内部应用负载平衡器,请参阅 设置具有虚拟机实例组后端的区域级内部应用负载平衡器。
清理
如需还原您在本教程中所做的更改,请完成以下步骤:
删除 Google 托管的证书:
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在证书标签页上,选中相应证书的复选框。
点击删除。
在显示的对话框中,点击删除进行确认。
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME \ --location=LOCATION
替换以下内容:
CERTIFICATE_NAME
:证书的名称LOCATION
:目标 Google Cloud 位置
删除证书颁发配置资源:
控制台
在 Google Cloud 控制台中,前往 Certificate Manager 页面。
在 Issuance Configs(发布配置)标签页上,选中 发布配置。
点击删除。
在显示的对话框中,点击删除进行确认。
gcloud
gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME \ --location=LOCATION
替换以下内容:
ISSUANCE_CONFIG_NAME
:颁发的名称 配置LOCATION
:目标 Google Cloud 位置
-
请注意,如需停用证书颁发配置资源中引用的 CA 池中您最近启用的 CA,或完全删除所引用的 CA 池,您必须先删除引用该 CA 池的每个证书颁发配置资源。
问题排查
有关问题排查步骤,请参阅与 CA Service 实例。