本教程介绍如何使用 Certificate Manager 将第三方证书迁移到Google Cloud 负载均衡器。
如需在不中断服务的情况下迁移第三方证书,请创建与第三方证书数量相同的 Google 管理型证书。接下来,将证书整合到单个证书映射中,并使用 DNS 将证书映射部署到负载均衡器。最后,更新 DNS A 和 AAAA 记录以指向负载均衡器的 IP 地址。
如需查看受支持的负载平衡器列表,请参阅 Certificate Manager 概览。
目标
本教程介绍如何完成以下任务:
- 创建具有 DNS 授权的 Google 管理的证书。
- 为所有证书创建一个证书映射。
- 使用 DNS 将证书部署到负载均衡器。
- 更新 DNS A 和 AAAA 记录以指向负载均衡器的 IP 地址。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
所需的角色
请确保您拥有以下角色,以便完成本教程中的任务:
Certificate Manager Owner (
roles/certificatemanager.owner)创建和管理 Certificate Manager 资源所需的角色。
Compute Load Balancer Admin (
roles/compute.loadBalancerAdmin) 或 Compute Network Admin (roles/compute.networkAdmin)创建和管理 HTTPS 目标代理时需要此权限。
DNS Administrator (
roles/dns.admin)如果您想使用 Cloud DNS 作为 DNS 解决方案,则必须添加此角色。
详情请参阅以下内容:
- Certificate Manager 的角色和权限。
- Compute Engine 的 Compute Engine IAM 角色和权限。
- Cloud DNS 的角色和权限。
创建 Google 管理的证书
创建与第三方证书数量相同的具有 DNS 授权的 Google 管理的证书(推荐)或自行管理的证书。在创建证书之前,请先创建 DNS 授权,然后将 CNAME 记录添加到您网域的权威 DNS 区域。
本部分列出了创建全局 Google 管理型证书的步骤和命令。如需创建区域级或跨区域的 Google 管理的证书,请参阅创建 Google 管理的证书。
创建 DNS 授权
DNS 授权仅涵盖单个域名。您必须为要用于目标证书的每个域名单独创建 DNS 授权。
如果您要为通配符证书(例如 *.myorg.example.com)创建 DNS 授权,请为父网域(例如 myorg.example.com)配置 DNS 授权。
控制台
您可以在创建证书时创建 DNS 授权或附加现有 DNS 授权。如需了解详情,请参阅创建引用 DNS 授权的 Google 管理的证书。
gcloud
您可以创建两种类型的 DNS 授权:FIXED_RECORD 或 PER_PROJECT_RECORD。如需了解详情,请参阅 DNS 授权。
FIXED_RECORD DNS 授权
如需创建 FIXED_RECORD DNS 授权,请使用以下 gcloud certificate-manager dns-authorizations create 命令:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--type=[FIXED_RECORD]
替换以下内容:
AUTHORIZATION_NAME:DNS 授权的名称。DOMAIN_NAME:您要为其创建此 DNS 授权的目标网域的名称。域名必须是完全限定域名,例如myorg.example.com。
创建 FIXED_RECORD DNS 授权后,请使用 gcloud certificate-manager dns-authorizations describe 命令对其进行验证:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
输出类似于以下内容:在输出中,找到 dnsResourceRecord 部分。找到 CNAME 记录,并将该记录的详细信息(data、name 和 type)添加到您的 DNS 配置中。
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.myorg.example.com. type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
PER_PROJECT_RECORD DNS 授权
如需创建 PER_PROJECT_RECORD DNS 授权,请使用以下 gcloud certificate-manager dns-authorizations create 命令:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--type=PER_PROJECT_RECORD
替换以下内容:
AUTHORIZATION_NAME:DNS 授权的名称。DOMAIN_NAME:您要为其创建此 DNS 授权的目标网域的名称。域名必须是完全限定域名,例如myorg.example.com。
创建 PER_PROJECT_RECORD DNS 授权后,请使用 gcloud certificate-manager dns-authorizations describe 命令对其进行验证:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
输出类似于以下内容:在输出中,找到 dnsResourceRecord 部分。找到 CNAME 记录,并将该记录的详细信息(data、name 和 type)添加到您的 DNS 配置中。
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
如需创建 DNS 授权,您可以使用 google_certificate_manager_dns_authorization 资源。
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
API
如需创建 DNS 授权,请向 dnsAuthorizations.create 方法发出 POST 请求:
POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME
{
"domain": "DOMAIN_NAME",
"type": "PER_PROJECT_RECORD" //optional
}
替换以下内容: