本教程将引导您完成将 Google 管理的证书与负载均衡器结合使用的证书部署过程 “授权”作为示例。
如需比较支持的网域授权类型,请参阅网域授权。
以下负载平衡器支持带有负载的 Google 管理的证书 进行负载均衡:
- 全球外部应用负载均衡器
- 传统应用负载均衡器
- 全局外部代理网络负载均衡器
如果您想要将现有证书迁移到证书管理器,请执行以下操作: 按照将证书迁移到 Certificate Manager。
目标
本教程介绍如何完成以下任务:
- 使用 使用 Certificate Manager 对负载均衡器进行授权。
- 使用目标 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 解决方案。
详情请参阅以下内容:
- 角色和权限: 证书管理器
- 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 管理的证书部署到负载均衡器。
创建证书映射
创建一个证书映射, 引用证书映射 与您的 Ad Exchange 条目关联的条目 证书。
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
替换为目标的名称 证书。