本教程以负载均衡器授权为例,介绍如何使用由 Google 管理的证书完成证书部署过程。
如需查看受支持的网域授权类型的比较,请参阅网域授权。
以下负载平衡器支持具有负载平衡器授权的 Google 管理的证书:
- 全球外部应用负载均衡器
- 传统应用负载均衡器
- 全球外部代理网络负载均衡器
如果要将现有证书迁移到证书管理器,请改为按照将证书迁移到证书管理器中的步骤操作。
目标
本教程介绍如何完成以下任务:
- 使用证书管理器,通过负载均衡器授权创建由受大众信任的 CA 颁发的 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 或 Compute Network Admin:创建和管理 HTTPS 目标代理时需要。
- DNS Administrator:如果要使用 Cloud DNS 作为 DNS 解决方案,则必须启用 DNS 管理员。
详情请参阅以下内容:
- Certificate Manager 的角色和权限
- Compute Engine 的 Compute Engine IAM 角色和权限
- 针对 Cloud DNS 的使用 IAM 进行访问权限控制
创建具有负载均衡器授权的 Google 管理的证书
如需创建具有负载均衡器授权的 Google 管理的证书,请完成本部分中的步骤。
如需为证书指定多个域名,请提供证书的目标域名列表(以英文逗号分隔)。
如需了解详情,请参阅权限和角色。
控制台
在 Google Cloud 控制台中,前往 Certificate Manager 页面。
在显示的页面上,选择证书标签页。
点击添加证书。
输入证书的名称。
该名称在项目中必须是唯一的。
可选:输入证书的说明。该说明有助于您之后识别特定证书。
对于位置,选择全局。
对于范围,选择默认。
对于证书类型,选择创建 Google 管理的证书。
对于证书授权机构类型,选择公开。
指定证书的域名。输入以英文逗号分隔的目标网域列表。此外,每个域名都必须是完全限定域名,例如
myorg.example.com
。对于授权类型,选择负载平衡器授权。
指定要与证书关联的标签。如果需要,您可以添加多个标签。如需添加标签,请点击 add_box 添加标签按钮,然后为标签指定
key
和value
。点击创建。验证新证书是否显示在证书列表中。
gcloud
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES"
请替换以下内容:
CERTIFICATE_NAME
:证书的唯一名称。DOMAIN_NAMES
:此证书的目标网域的列表(以英文逗号分隔)。每个域名都必须是完全限定域名,例如myorg.example.com
。
Terraform
使用 google_certificate_manager_certificate
资源。
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
API
向 certificates.create
方法发出 POST
请求以创建证书,如下所示:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME" { "managed": { "domains": ["DOMAIN_NAME"], } }
请替换以下内容:
PROJECT_ID
:目标 Google Cloud 项目的 ID。CERTIFICATE_NAME
:描述此证书的唯一名称。DOMAIN_NAME
:此证书的目标网域。域名必须是完全限定域名,例如myorg.example.com
。
如需简要了解证书部署过程,请参阅部署概览。
将证书部署到负载均衡器
完成本部分中的步骤,将您在先前步骤中创建的 Google 管理的证书部署到负载均衡器。
创建证书映射
gcloud
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
将 CERTIFICATE_MAP_NAME
替换为目标证书映射的名称。
Terraform
创建证书映射条目
gcloud
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
请替换以下内容:
CERTIFICATE_MAP_ENTRY_NAME
:证书映射条目的唯一名称CERTIFICATE_MAP_NAME
:此证书映射条目附加到的证书映射的名称CERTIFICATE_NAME
:您要与此证书映射条目关联的证书的名称HOSTNAME
:您要与此证书映射条目关联的主机名
Terraform
验证证书映射条目是否处于活跃状态
在将相应的证书映射关联到目标代理之前,请使用以下命令验证证书映射条目是否处于活跃状态:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
请替换以下内容:
CERTIFICATE_MAP_ENTRY_NAME
:目标证书映射条目的名称CERTIFICATE_MAP_NAME
:此证书映射条目附加到的证书映射的名称
该命令会返回类似于以下内容的输出:
certificates: createTime: '2021-09-06T10:01:56.229472109Z' hostname: example.com name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
将证书映射附加到目标代理
将已配置的证书映射附加到目标代理。
控制台
- 在 Google Cloud 控制台中,转到目标代理页面。
请记下目标代理的名称。
将证书映射附加到目标代理:
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME"
请替换以下内容:
* `PROXY_NAME`: the name of the target proxy
* `CERTIFICATE_MAP_NAME`: the name of the certificate
map referencing your certificate map entry and its associated
certificate
Terraform
如果有任何现有 TLS (SSL) 证书直接附加到代理,则代理会优先考虑证书映射引用的证书,而不是直接附加的 TLS (SSL) 证书。
等待证书激活
将证书附加到目标代理后,证书最多可能需要几个小时才能颁发并且其状态将更改为 ACTIVE
。状态为 ACTIVE
后,负载平衡器最长可能需要 30 分钟才能开始使用证书。
使用以下命令检查证书的状态:
gcloud certificate-manager certificates describe CERTIFICATE_NAME
将 CERTIFICATE_NAME
替换为 Google 管理的目标证书的名称。
该命令会返回类似于以下内容的输出:
createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: authorizationAttemptInfo: - domain: myorg.example.com state: AUTHORIZED domains: - myorg.example.com state: ACTIVE name: projects/myProject/locations/global/certificates/myCert sanDnsnames: - myorg.example.com updateTime: '2021-10-20T12:19:55.083385630Z'
如果证书状态在几个小时后未更改为 ACTIVE
,请检查以下内容:
- 引用此证书的证书映射已附加到正确的目标代理,如将证书映射附加到代理中所述。
- 目标代理已连接到正确的负载均衡器,如验证目标代理关联中所述。
- 目标网域的 DNS 配置指向目标负载均衡器的 IP 地址,如更新 DNS A 和 AAAA 记录以指向负载均衡器的 IP 地址中所述。
如需了解更多问题排查步骤,请参阅 SSL 证书问题排查。
清理
如需还原您在本教程中所做的更改,请完成以下步骤:
从代理中分离证书映射。
在分离证书映射之前,请注意以下事项:
- 如果有任何 TLS (SSL) 证书直接附加到代理,分离证书映射会使代理继续使用那些直接附加的 TLS (SSL) 证书。
- 如果没有直接附加到代理的 TLS (SSL) 证书,则无法从代理中分离证书映射。您必须先将至少一个 TLS (SSL) 证书直接附加到代理,然后才能分离证书映射。
如需分离证书映射,请运行以下命令:
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
从证书映射中删除证书映射条目:
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
请替换以下内容:
CERTIFICATE_MAP_ENTRY_NAME
:目标证书映射条目的名称CERTIFICATE_MAP_NAME
:目标证书映射的名称
删除证书映射:
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
将
CERTIFICATE_MAP_NAME
替换为目标证书映射的名称。删除 Google 管理的证书:
gcloud certificate-manager certificates delete CERTIFICATE_NAME
将
CERTIFICATE_NAME
替换为目标证书的名称。