本教程介绍了如何使用 Certificate Manager 将由 Certificate Authority Service 管理的全球 Google 证书部署到跨区域内部应用负载平衡器。
如果您想部署到全球外部负载平衡器或区域负载平衡器,请参阅以下内容:
目标
本教程介绍如何完成以下任务:
- 使用 Certificate Manager 通过 CA Service 创建 Google 管理的证书。
- 使用目标 HTTPS 代理将证书部署到受支持的负载平衡器。
准备工作
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 启用 CA Service API。
- 创建 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 服务中执行操作。
详情请参阅以下内容:
- 证书管理器的角色和权限。
- Compute Engine 的 Compute Engine IAM 角色和权限。
- 为 CA 服务使用 IAM 进行访问权限控制。
创建负载均衡器
本教程假定您已创建并配置了负载平衡器的后端、健康检查、后端服务和网址映射。记下网址映射的名称,因为本教程后面的部分需要它。
如果您尚未创建跨区域内部应用负载平衡器,请参阅设置具有虚拟机实例组后端的跨区域内部应用负载平衡器。
配置 CA Service 与 Certificate Manager 的集成
如需将 CA 服务与证书管理器集成,请按以下步骤操作:
在目标 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
向 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 步中创建的服务账号的完整名称。
为 CA 池创建证书颁发配置资源:
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在签发配置标签页上,点击创建。
在名称字段中,为证书颁发配置输入一个具有唯一性的名称。
可选:在说明字段中,输入发行配置的说明。
在位置部分,选择全球。
可选:在有效期字段中,以天为单位指定已颁发证书的有效期。该值必须介于 21 天到 30 天之间(包括这两个数值)。
可选:在轮替期限百分比中,指定证书续订流程开始时所占生命周期的百分比。如需查找有效值的范围,请参阅生命周期和轮替期百分比。
可选:从密钥算法列表中,选择生成私钥时要使用的密钥算法。
从 CA 池列表中,选择要分配给此证书颁发配置资源的 CA 池的名称。
在标签字段中,指定要与证书关联的标签。如需添加标签,请点击
添加标签,然后为标签指定键和值。点击创建。
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 管理的证书,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在证书标签页上,点击添加证书。
在证书名称字段中,为证书输入一个唯一名称。
可选:在说明字段中,输入证书的说明。您可以通过说明来识别证书。
在位置部分,选择全球。
对于范围,选择所有地区。
在证书类型部分,选择创建 Google 管理的证书。
对于证书授权机构类型,请选择专用。
在网域名称字段中,指定证书的域名(以英文逗号分隔)列表。每个域名都必须是完全限定域名,例如
myorg.example.com
。对于选择证书签发配置,请选择引用目标 CA 池的证书签发配置资源的名称。
在标签字段中,指定要与证书关联的标签。如需添加标签,请点击
添加标签,然后为标签指定键和值。点击创建。
新证书会显示在证书列表中。
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
。
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在证书标签页中,查看证书的状态列。
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 账号收取费用,请将这些资源删除。
删除负载平衡器及其资源。
请参阅清理负载均衡设置。
删除 Google 托管的证书:
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在证书标签页上,选中相应证书的复选框。
点击删除。
在显示的对话框中,点击删除进行确认。
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME
将
CERTIFICATE_NAME
替换为目标证书的名称。删除证书颁发配置资源:
控制台
在 Google Cloud 控制台中,前往证书管理器页面。
在 Issuance Configs 标签页上,选中证书签发配置资源对应的复选框。
点击删除。
在显示的对话框中,点击删除进行确认。
gcloud
gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
将
ISSUANCE_CONFIG_NAME
替换为目标证书颁发配置资源的名称。删除 CA 池。
如需删除 CA 池,或停用证书颁发配置资源引用的 CA 池中最后启用的 CA,请删除引用该 CA 池的所有证书颁发配置。如需了解详情,请参阅删除 CA 池。