管理证书映射条目

本部分介绍如何创建和管理证书映射条目。证书映射条目会将证书与目标主机名和目标证书映射相关联。

如需详细了解证书映射条目,请参阅证书管理器的工作原理

如需了解如何使用 Certificate Manager 部署证书,请参阅部署概览

如需详细了解本页面中使用的 gcloud 命令,请参阅 Certificate Manager CLI 参考文档

创建证书映射条目

如需创建证书映射条目并将其与一个或多个证书关联,请完成本部分中的步骤。您必须在证书映射条目中指定至少一个证书。如果要为给定主机名指定多个证书,则只能在每个证书使用不同的加密套件(例如 ECDSA 和 RSA)时执行此操作。

如需将多个证书与一个证书映射条目关联,请提供以英文逗号分隔的证书名称列表,以便与该条目关联。您最多可以将 4 个证书与单个证书映射条目相关联。对于每个子网域,您必须创建单独的证书映射条目。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Editor
  • Certificate Manager Owner

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

gcloud

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAMES" \
    --hostname="HOSTNAME"

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME 是描述此证书映射条目的唯一名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_NAMES 是要与此证书映射条目关联的证书名称的逗号分隔列表,
  • 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
}

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

API

certificateMaps.certificateMapEntries.create 方法发出 POST 请求,以创建证书映射条目,如下所示:

POST /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries?certificate_map_entry_id=CERTIFICATE_MAP_ENTRY_NAME"
{
 hostname: "HOSTNAME"
 certificates: ["projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME"],
}

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_ENTRY_NAME 是描述此证书映射条目的唯一名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • HOSTNAME 是您要与此证书映射条目关联的主机名。
  • CERTIFICATE_NAME 是您要与此证书映射条目关联的证书的名称。

如需了解负载均衡器在握手期间如何选择证书,请参阅证书选择逻辑

创建主证书映射条目

如果客户端未提供主机名或提供的主机名与任何已配置的证书映射条目相匹配,您可以指定负载均衡器提供的主证书。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Editor
  • Certificate Manager Owner

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

gcloud

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAMES" \
    --set-primary

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME 是描述此证书映射条目的唯一名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_NAMES 是要与此证书映射条目关联的证书名称的逗号分隔列表,

API

certificateMaps.certificateMapEntries.create 方法发出 POST 请求,以创建证书映射条目,如下所示:

POST /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries?certificate_map_entry_id=CERTIFICATE_MAP_ENTRY_NAME"
{
   matcher: "PRIMARY",
   certificates: ["projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME"],
}

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_ENTRY_NAME 是描述此证书映射条目的唯一名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_NAME 是您要与此证书映射条目关联的证书的名称。

如需了解负载均衡器在握手期间如何选择证书,请参阅证书选择逻辑

更新证书映射条目

如需更新证书映射条目,请完成本部分中的步骤。您可以按如下方式更新证书映射条目:

  • 分配或取消分配证书
  • 修改说明
  • 修改标签

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Editor
  • Certificate Manager Owner

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

gcloud

gcloud certificate-manager maps entries update CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME,CERTIFICATE_NAME" \
    --description="DESCRIPTION"
    --update-labels="LABELS"

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME 是描述此证书映射条目的唯一名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_NAME 是您要与此证书映射条目关联的证书的名称。
  • DESCRIPTION 是对此证书映射条目的有意义的说明。
  • LABELS 是应用于此证书映射条目的标签列表。

API

certificateMaps.certificateMapEntries.patch 方法发出 PATCH 请求,以更新证书映射条目,如下所示:

PATCH  /v1/projects/example-project/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries/CERTIFICATE_MAP_ENTRY_NAME?updateMask=labels,description,certificates
{
  "certificates": ["projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME"],
  "description": "DESCRIPTION",
  "labels": { "LABEL_KEY": "LABEL_VALUE" }
}

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME 是描述此证书映射条目的唯一名称。
  • CERTIFICATE_NAME 是您要与此证书映射条目关联的证书的名称。
  • DESCRIPTION 是对此证书映射条目的有意义的说明。
  • LABEL_KEY 是应用于此证书映射条目的标签键。
  • LABEL_VALUE 是应用于此证书映射条目的标签值。

列出证书映射条目

如需列出目标证书映射中当前配置的证书映射条目,请完成本部分中的步骤。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Viewer
  • Certificate Manager Editor
  • Certificate Manager Owner

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

gcloud

gcloud certificate-manager maps entries list --map=CERTIFICATE_MAP_NAME \
    --filter="FILTER" \
    --page-size="PAGE_SIZE" \
    --limit="LIMIT" \
    --sort-by="SORT_BY"

替换以下内容:

  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。
  • FILTER 是一个表达式,用于将返回的结果限制为特定值。例如,您可以按以下条件过滤结果:

    • 投放状态:--filter='state=ACTIVE'
    • 匹配器(设置为主要匹配器):--filter='-matcher=PRIMARY'
    • 主机名:--filter='hostname=example.com'
    • 已分配的证书:--filter='certificates:my-cert'
    • 标签和创建时间:--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'

    如需查看可与证书管理器搭配使用的更多过滤示例,请参阅 Cloud Key Management Service 文档中的对列表结果进行排序和过滤

  • PAGE_SIZE 是每页返回的结果数。

  • LIMIT 是要返回的结果数上限。

  • SORT_BY 是以英文逗号分隔的 name 字段列表,系统将按照这些字段对返回的结果进行排序。默认排序顺序是升序;对于降序排序顺序,请为所需字段添加 ~ 前缀。

API

通过向 certificateMaps.certificateMapEntries.list 方法发出 LIST 请求,列出在给定证书映射中配置的证书映射条目,如下所示:

GET /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。
  • FILTER 是一个表达式,用于将返回的结果限制为特定值。
  • PAGE_SIZE 是每页返回的结果数。
  • SORT_BY 是以英文逗号分隔的字段名称列表,按这些名称对返回的结果进行排序。默认排序顺序是升序;对于降序排序顺序,请为所需字段添加 ~ 前缀。

查看证书映射条目的状态

如需查看证书映射条目的状态,请完成本部分中的步骤。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Viewer
  • Certificate Manager Editor
  • Certificate Manager Owner

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

gcloud

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

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME 是目标证书映射条目的名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。

API

certificateMaps.certificateMapEntries.get 方法发出 GET 请求,以查看证书映射条目的状态,如下所示:

GET /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries/CERTIFICATE_MAP_ENTRY_NAME

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME 是目标证书映射条目的名称。

删除证书映射条目

如需从证书映射中删除证书映射条目,请完成本部分中的步骤。此操作会将与证书映射条目关联的证书与目标代理分离。

删除证书映射条目不会删除关联的证书。 如需从 Google Cloud 中移除这些证书,您必须手动删除它们

如需完成此任务,您必须拥有目标 Google Cloud 项目的 Certificate Manager Owner 角色。

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

gcloud

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

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME 是目标证书映射条目的名称。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。

API

certificateMaps.certificateMapEntries.delete 方法发出 DELETE 请求,以删除证书映射条目,如下所示:

DELETE /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries/CERTIFICATE_MAP_ENTRY_NAME

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是此证书映射条目附加到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME 是目标证书映射条目的名称。

后续步骤