本教程介绍了如何将 Cloud Load Balancing 证书迁移到 Certificate Manager。如需详细了解 Cloud Load Balancing 证书,请参阅 Cloud Load Balancing 文档中的 SSL 证书概览。
如需迁移 Cloud Load Balancing 证书且不发生停机,请先确定要迁移的证书。然后,创建与 Cloud Load Balancing 证书数量相同的由 Google 管理的证书。接下来,将证书整合到单个证书映射中,并在另一个负载均衡器中测试该证书映射。如果测试成功,请将证书映射附加到托管 Cloud Load Balancing 证书的目标负载均衡器。
如需查看受支持的负载平衡器的列表,请参阅 Certificate Manager 概览。
目标
本教程介绍如何完成以下任务:
- 确定要从目标负载均衡器迁移的证书。
- 创建 Google 管理的证书。
- 创建证书映射和证书映射条目。
- 在另一个负载均衡器中测试证书映射。
- 将证书映射附加到目标负载均衡器。
准备工作
- 登录您的 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 的角色和权限。
确定要迁移的证书
如需确定要迁移的证书,请按以下步骤操作:
在负载均衡器上,确定目标代理的名称。
确定要迁移的证书。
如需查找附加到目标代理的证书,请运行以下命令:
gcloud compute target-https-proxies describe TARGET_PROXY_NAME
将
TARGET_PROXY_NAME替换为目标代理的名称。输出类似于以下内容:
creationTimestamp: '2021-10-06T04:05:07.520-07:00' fingerprint: c9Txdx6AfcM= id: '365692570234384780' kind: compute#targetHttpsProxy name: my-proxy selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpsProxies/my-proxy sslCertificates: - https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-first-certificate - https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-second-certificate urlMap: https://www.googleapis.com/compute/v1/projects/my-project/global/urlMaps/my-map请注意
sslCertificates字段中列出的证书名称。如需了解详情,请参阅目标代理概览。-
gcloud compute ssl-certificates --project=PROJECT_ID describe LB_CERTIFICATE_NAME
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 ID。LB_CERTIFICATE_NAME:负载均衡器证书的名称。
输出类似于以下内容:
certificate: | -----BEGIN CERTIFICATE----- MIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTDTANBgkqhkiG9w0BAQsFADBX MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE CxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTIwMDYx OTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA1UEBhMCVVMxIjAgBgNVBAoT GUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASBgNVBAMTC0dUUyBSb290IFIx MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAthECix7joXebO9y/lD63 ladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9rH5zoQdsfnFl97vufKj6bwS iV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NEDPjTrETo8gYbEvs/AmQ351k KSUjB6G00j0uYODP0gmHu81I8E3CwnqIiru6z1kZ1q+PsAewnjHxgsHA3y6mbWwZ DrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DOogrFZYJsuB6jC511pzrp1Zk j5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNktMg6TO8UpmvMrUpsyUqtEj5 cuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h/rs37EOeZVXtL0m79YB0esW CruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qzkm06p98g7BAe+dDq6dso499 iYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7DbGKogPeMa3Md+pvez7W35Ei Eua++tgy/BBjFFFy3l3WFpO9KWgz7zpm7AeKJt8T11dleCfeXkkUAKIAf5qoIbap sZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLnMQ/0lUTbiSw1nH69MG6zO0b 9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0MA4GA1UdDwEB/wQEAwIBhjAP BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTkrysmcRorSCeFL1JmLO/wiRNxPjAf BgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzBgBggrBgEFBQcBAQRUMFIw JQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb29nL2dzcjEwKQYIKwYBBQUH MAKGHWh0dHA6Ly9wa2kuZ29vZy9nc3IxL2dzcjEuY3J0MDIGA1UdHwQrMCkwJ6Al oCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc3IxLmNybDA7BgNVHSAENDAy MAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWeQIFAwIwDQYLKwYBBAHWeQIF AwMwDQYJKoZIhvcNAQELBQADggEBADSkHrEoo9C0dhemMXoh6dFSPsjbdBZBiLg9 NR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b2t6yMAYN/olUazsaL+yyEn9 WprKASOshIArAoyZl+tJaox118fessmXn1hIVw41oeQa1v1vg4Fv74zPl6/AhSrw 9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhMtfTJr9w4z30Z209fOU0iOMy +qduBmpvvYuR7hZL6Dupszfnw0Skfths18dG9ZKb59UhvmaSGZRVbNQpsg3BZlvi d0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz/yilrbCgj8= -----END CERTIFICATE----- creationTimestamp: '2021-05-06T04:39:21.736-07:00' expireTime: '2022-06-07T01:10:34.000-07:00' id: '6422259403966690822' kind: compute#sslCertificate managed: domainStatus: a.my-domain1.example.com: ACTIVE b.my-domain2.example.com: ACTIVE domains: - a.my-domain1.example.com - b.my-domain2.example.com status: ACTIVE name: my-certificate selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-certificate subjectAlternativeNames: - a. my-domain1.example.com - b. my-domain2.example.com type: MANAGED
创建 Google 管理的证书
创建与负载均衡器证书数量相同的 Google 管理的证书。对于全球级或经典版负载均衡器,请创建全球级证书;对于区域级负载均衡器,请创建区域级证书;对于跨区域负载均衡器,请创建跨区域证书。在创建证书之前,请先创建 DNS 授权,并将 CNAME 记录添加到您网域的权威 DNS 区域。
您可以选择创建具有 DNS 授权的 Google 管理的证书(推荐)或自行管理的证书。
本部分列出了创建全局 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
}
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 ID。AUTHORIZATION_NAME:DNS 授权的名称。DOMAIN_NAME:您要为其创建此 DNS 授权的目标网域的名称。 域名必须是完全限定域名,例如myorg.example.com。
创建引用 DNS 授权的 Google 管理的证书
如需创建引用您在先前步骤中创建的 DNS 授权的全球 Google 管理的证书,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Certificate Manager 页面。
在证书标签页上,点击添加证书。
在证书名称字段中,输入证书的唯一名称。
可选:在说明字段中,输入证书的说明。通过说明,您可以识别证书。
在位置部分,选择全球。
对于范围,选择默认。
在证书类型部分,选择创建 Google 管理的证书。
对于证书授权机构类型,请选择公开。
在域名字段中,指定证书的域名列表(以英文逗号分隔)。每个域名都必须是完全限定域名,例如
myorg.example.com。域名也可以是通配符域名,例如*.example.com。对于授权类型,请选择 DNS 授权。
该页面会列出网域名的 DNS 授权。如果某个域名没有关联的 DNS 授权,请按以下步骤创建:
- 点击创建缺少的 DNS 授权。
- 在 DNS 授权名称字段中,指定 DNS 授权的名称。
默认 DNS 授权类型为
FIXED_RECORD。如需跨多个项目独立管理证书,请选中按项目授权复选框。 - 点击 Create DNS authorization(创建 DNS 授权)。
在标签字段中,指定要与证书关联的标签。如需添加标签,请点击 添加标签,并为标签指定键和值。
点击创建。
新证书会显示在证书列表中。
gcloud
如需创建具有 DNS 授权的 Google 管理的全球证书,请运行带有 dns-authorizations 标志的 certificate-manager certificates create 命令:
gcloud certificate-manager certificates create CERTIFICATE_NAME \
--domains="DOMAIN_NAME,*.DOMAIN_NAME" \
--dns-authorizations="AUTHORIZATION_NAMES"
替换以下内容:
CERTIFICATE_NAME:证书的名称。DOMAIN_NAME:目标网域的名称。域名必须是完全限定域名,例如myorg.example.com,或通配符域名,例如*.myorg.example.com。星号点前缀(*.)表示通配符证书。AUTHORIZATION_NAMES:您为证书创建的 DNS 授权名称的英文逗号分隔列表。
Terraform
API
通过向 certificates.create 方法发出 POST 请求来创建证书,如下所示:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
"managed": {
"domains": ["DOMAIN_NAME"],
"dnsAuthorizations": [
"projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME",
],
}
}
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 ID。CERTIFICATE_NAME:证书的名称。DOMAIN_NAME:目标网域的名称。域名必须是完全限定域名,例如myorg.example.com,或通配符域名,例如*.myorg.example.com。星号英文句点前缀 (*.) 表示通配符证书。AUTHORIZATION_NAMES:DNS 授权的逗号分隔列表。
将 CNAME 记录添加到您的 DNS 配置
如果您使用第三方 DNS 解决方案来管理 DNS,请参阅其文档,了解如何将 CNAME 记录添加到 DNS 配置。如果您使用Google Cloud 管理 DNS,请完成本部分中的步骤。