部署具有负载均衡器授权的全球 Google 管理的证书


本教程将介绍如何使用由 Google 管理的证书和负载均衡器来完成证书部署流程 “授权”作为示例。

要对比受支持的网域授权类型,请参阅网域 授权

以下负载平衡器支持带有负载的 Google 管理的证书 进行负载均衡:

  • 全球外部应用负载均衡器
  • 传统应用负载均衡器
  • 全局外部代理网络负载均衡器

如果您想要将现有证书迁移到证书管理器,请执行以下操作: 按照将证书迁移到 Certificate Manager

目标

本教程介绍如何完成以下任务:

  • 使用 使用 Certificate Manager 对负载均衡器进行授权。
  • 使用目标 HTTPS 将证书部署到受支持的负载均衡器 代理。

如需详细了解证书部署过程,请参阅部署 概览

如果您按照本教程中的步骤为 请注意, 该域会在配置证书时中断, 在相应的负载均衡器上激活。

准备工作

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. 请确保您拥有以下角色,以便完成本 教程:

    • Certificate Manager Owner:创建和 管理 Certificate Manager 资源。
    • Compute Load Balancer AdminCompute Network Admin:必填 创建和管理 HTTPS 目标代理。
    • DNS Administrator:如果您要将 Cloud DNS 用作您的 DNS 解决方案。

    详情请参阅以下内容:

创建具有负载均衡器授权的 Google 管理的证书

如需创建具有负载均衡器授权的 Google 管理的证书,请执行以下操作: 完成本部分中的步骤

如需为证书指定多个域名,请提供以英文逗号分隔的证书 证书的目标域名列表。

如需了解详情,请参阅权限和角色

控制台

  1. 在 Google Cloud 控制台中,前往 Certificate Manager 页面。

    前往“证书管理器”

  2. 在显示的页面上,选择证书标签页。

  3. 点击添加证书

  4. 输入证书的名称

    该名称在项目中必须是唯一的。

  5. 可选:输入证书的说明。说明 可帮助您稍后识别特定证书。

  6. 对于位置,选择全局

  7. 对于范围,选择默认

  8. 对于证书类型,选择创建 Google 管理的证书

  9. 对于证书授权机构类型,选择公开

  10. 指定证书的域名。请输入以英文逗号分隔 目标网域的列表。此外,每个域名都必须是 域名,例如 myorg.example.com

  11. 对于授权类型,选择负载平衡器授权

  12. 指定要与证书关联的标签。您可以添加 多个标签(如果需要)。要添加标签,请点击 添加标签按钮,然后为标签指定 keyvalue

  13. 点击创建。验证新证书是否显示在证书列表中。

gcloud

gcloud certificate-manager certificates create CERTIFICATE_NAME \
--domains="DOMAIN_NAMES"

替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称。
  • DOMAIN_NAMES:以英文逗号分隔的目标列表 该证书的网域。每个域名都必须是完全限定的域名 域名,例如 myorg.example.com

Terraform

使用 google_certificate_manager_certificate 资源

resource "google_certificate_manager_certificate" "default" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "Cert with LB authorization"
  managed {
    domains = [local.domain]
  }
  labels = {
    "terraform" : true
  }
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

API

通过向 POST 请求创建证书 certificates.create 方法,如下所示:

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.

有关证书部署流程的概述,请参阅部署 概览

将证书部署到负载均衡器

完成本部分中的步骤即可部署 添加到负载均衡器。

创建证书映射

创建一个证书映射, 引用证书映射 与您的 Ad Exchange 条目关联的条目 证书

gcloud

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

CERTIFICATE_MAP_NAME 替换为目标的名称 证书映射。

Terraform

使用 google_certificate_manager_certificate_map 资源

resource "google_certificate_manager_certificate_map" "default" {
  name        = "${local.name}-certmap1-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

创建证书映射条目

创建证书映射条目 并将其与您的 证书为 以及您的证书映射

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

使用 google_certificate_manager_certificate_map_entry 资源

resource "google_certificate_manager_certificate_map_entry" "default" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.default.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.default.id]
  hostname     = local.domain
}

验证证书映射条目是否处于活跃状态

在将相应的证书映射关联到目标代理之前,请使用以下命令验证证书映射条目是否处于活跃状态:

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'

将证书映射附加到目标代理

将已配置的证书映射附加到目标代理。

控制台

  1. 在 Google Cloud 控制台中,转到目标代理页面。

前往“目标”页面 指标

  1. 请记下目标代理的名称。

  2. 将证书映射附加到目标代理:

   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

使用 google_compute_target_https_proxy 资源

resource "google_compute_target_https_proxy" "default" {
  name            = "test-proxy"
  certificate_map = "//certificatemanager.googleapis.com/${google_certificate_manager_certificate_map.default.id}"
  url_map         = google_compute_url_map.default.id
}

如果有任何现有的 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,请检查 以下:

如需了解更多问题排查步骤,请参阅 SSL 问题排查 证书

清理

如需还原您在本教程中所做的更改,请完成以下操作 步骤:

  1. 从代理中分离证书映射。

    在分离证书映射之前,请注意以下事项:

    • 如果有任何 TLS (SSL) 证书直接附加到代理, 分离证书映射会导致代理继续使用这些证书 直接附加的 TLS (SSL) 证书。
    • 如果没有直接附加到代理的 TLS (SSL) 证书, 证书映射无法与代理分离。您必须先将 将至少一个 TLS (SSL) 证书直接发送到代理,然后才能 分离证书映射。

    如需分离证书映射,请运行以下命令:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    
  2. 从证书映射中删除证书映射条目:

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
      --map="CERTIFICATE_MAP_NAME"
    

    替换以下内容:

    • CERTIFICATE_MAP_ENTRY_NAME:目标的名称 证书映射条目
    • CERTIFICATE_MAP_NAME:目标的名称 证书映射
  3. 删除证书映射:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    CERTIFICATE_MAP_NAME 替换为目标的名称 证书映射。

  4. 删除 Google 管理的证书:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    CERTIFICATE_NAME 替换为目标的名称 证书。

后续步骤