部署自行管理的全球证书


本教程介绍了如何使用证书管理器部署自行管理的全球证书。

以下负载均衡器支持全球自行管理的证书:

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

如需将自行管理的证书部署到区域级外部应用负载平衡器或区域级内部应用负载平衡器,请参阅部署区域级自行管理的证书

目标

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

  • 将自行管理的证书上传到证书管理器。
  • 使用目标 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 目标代理时需要。

    详情请参阅以下内容:

创建负载均衡器

创建要在其中部署证书的负载均衡器。

本教程的其余部分假定您已配置负载均衡器的后端、健康检查、后端服务和网址映射。请记下网址映射的名称,因为您在本教程的后面部分需要用到它。

创建私钥和证书

如需创建私钥和证书,请执行以下操作:

  1. 使用可信的第三方证书授权机构 (CA) 颁发证书及其关联的密钥。

  2. 验证证书是否已正确链接且受根信任。

  3. 准备以下 PEM 编码文件:

    • 证书文件 (CRT)
    • 对应的私钥文件 (KEY)

如需了解如何请求和验证证书,请参阅创建私钥和证书

将自行管理的证书上传到证书管理器

控制台

  1. 在 Google Cloud 控制台中,前往证书管理器页面。

    前往 Certificate Manager

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

  3. 点击添加证书

  4. 输入证书的名称

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

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

  6. 对于位置,选择全局

  7. 对于范围,请选择以下任一选项:

    1. 默认:为全球外部应用负载平衡器传统版应用负载平衡器全球外部代理网络负载平衡器选择默认值
    2. 所有区域:为跨区域内部应用负载均衡器选择“所有区域”
  8. 证书类型部分,选择创建自行管理的证书

  9. 对于证书字段,请执行以下任一操作:

    • 点击上传按钮,然后选择您的 PEM 格式的证书文件。
    • 复制并粘贴 PEM 格式证书的内容。内容必须以 -----BEGIN CERTIFICATE----- 开头,并以 -----END CERTIFICATE----- 结尾。
  10. 对于私钥证书字段,请执行以下任一操作:

    • 点击上传按钮,然后选择您的私钥。您的私钥必须采用 PEM 格式,且不受密码保护。
    • 复制并粘贴 PEM 格式的私钥内容。通过 私钥必须以 -----BEGIN PRIVATE KEY----- 开头, 以 -----END PRIVATE KEY----- 结尾。
  11. 指定要与证书关联的标签。如果需要,您可以添加多个标签。如需添加标签,请点击 添加标签按钮,并为标签指定 keyvalue

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

gcloud

如需将证书上传到证书管理器,请执行以下操作:

对于全局外部应用负载平衡器、传统应用负载平衡器或全局外部代理网络负载平衡器,请执行以下操作

运行以下命令:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
   --certificate-file="CERTIFICATE_FILE" \
   --private-key-file="PRIVATE_KEY_FILE"

替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称
  • CERTIFICATE_FILE:CRT 证书文件的路径和文件名
  • PRIVATE_KEY_FILE:KEY 私钥文件的路径和文件名

对于跨区域内部应用负载均衡器:

运行以下命令:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
   --certificate-file="CERTIFICATE_FILE" \
   --private-key-file="PRIVATE_KEY_FILE" \
   --scope=all-regions

替换以下内容:

  • CERTIFICATE_NAME:证书的唯一名称
  • CERTIFICATE_FILE:CRT 证书文件的路径和文件名
  • PRIVATE_KEY_FILE:KEY 私钥文件的路径和文件名

将自行管理的证书部署到负载均衡器

以下部分介绍了如何将上传到证书管理器的自行管理证书部署到负载均衡器。

根据负载均衡器类型,您可以按如下方式部署证书:

使用证书映射部署证书

本部分介绍了使用证书映射部署证书的步骤。

创建证书映射

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

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

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

创建证书映射条目

创建一个证书映射条目, 并将其与您的 自行管理的证书证书映射

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:您要关联的主机名 包含证书映射条目

验证证书映射条目是否处于有效状态

在将证书映射附加到目标代理之前,请运行以下命令以验证证书映射条目是否处于活跃状态:

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

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的唯一名称
  • CERTIFICATE_MAP_NAME:附加证书映射条目的证书映射名称

如果证书映射条目处于有效状态,Google Cloud CLI 会返回类似于以下内容的输出:

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'

创建 HTTPS 目标代理

如需创建 HTTPS 目标代理,请参阅创建目标代理

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

如需将已配置的证书映射附加到目标代理,请按以下步骤操作:

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

    打开“目标代理”

  2. 记下目标代理的名称。

  3. 如需将证书映射附加到目标代理,请运行以下命令:

    gcloud compute target-https-proxies update PROXY_NAME \
       --certificate-map="CERTIFICATE_MAP_NAME"
    

    替换以下内容:

    • PROXY_NAME:目标代理的名称
    • CERTIFICATE_MAP_NAME:引用证书映射条目及其关联证书的证书映射的名称

如果任何 TLS (SSL) 证书直接附加到代理,代理会优先使用证书映射引用的证书,而不是直接附加的证书。

创建转发规则

设置转发规则并完成负载均衡器的设置。如需了解详情,请参阅使用转发规则

将证书直接附加到目标代理

如需将证书直接附加到代理,请运行以下命令:

gcloud compute target-https-proxies update PROXY_NAME \
    --url-map=URL_MAP \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

替换以下内容:

  • PROXY_NAME:代理的唯一名称。
  • URL_MAP:网址映射的名称。您在创建负载均衡器时创建了网址映射。
  • CERTIFICATE_NAME:证书的名称。

清理

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

  1. 将证书映射与代理分离:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    

    PROXY_NAME 替换为目标代理的名称。

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

    • 确保至少有一个 TLS (SSL) 证书直接附加到代理。如果代理未附加任何证书,您将无法分离证书映射。
    • 将证书映射与代理分离后,代理便可继续使用直接附加到代理的 TLS (SSL) 证书。
  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. 删除上传的证书:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

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

后续步骤