使用 Public CA 和 ACME 客户端请求证书

本教程将介绍如何请求 使用 Google Cloud CLI 管理 Public Certificate Authority 机构。如需了解公共证书授权机构使用的根 CA 和中间 CA,请参阅 Google Trust Services。免费 用于从公共 CA 请求证书。

准备工作

  • Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  • Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  • 确保您拥有 Owner (roles/owner) 或 Public CA External Account Key Creator (publicca.externalAccountKeyCreator) IAM 角色。

    如需授予 Public CA External Account Key Creator (publicca.externalAccountKeyCreator) IAM 角色,请运行以下命令:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:USER \
      --role=roles/publicca.externalAccountKeyCreator
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID
    • USER:您要对其执行删除操作的用户的唯一标识符 分配 IAM 角色

    如需了解如何授予 IAM 角色,请参阅管理对项目、文件夹和组织的访问权限

  • Enable the Public CA API:

    gcloud services enable publicca.googleapis.com

安装客户端

如需开始使用公共 CA,您必须安装 ACME 客户端。以下说明使用 Certbot 作为 ACME 客户端。如果 ACME 客户端支持外部账号绑定 (EAB),则您可以使用任何其他 ACME 客户端。

要安装 Certbot,请参阅 Certbot 说明

确保将客户端指向 Public CA 服务器。ACME 客户端首次与公共 CA 交互时,客户端会生成一个新的密钥对,并将公钥发送给公共 CA。

请求 EAB 密钥 ID 和 HMAC

安装 ACME 客户端后,您必须向公共 CA 注册 ACME 账号,才能向公共 CA 请求证书。EAB 密钥可以帮助您注册 ACME 账号 公共 CA。EAB 密钥由密钥 ID 和基于哈希的消息身份验证代码 (HMAC) 组成。

您可以使用 Public CA APIGoogle Cloud CLI 请求 EAB 密钥。

如需请求 EAB 密钥 ID 和 HMAC,请运行以下命令:

gcloud publicca external-account-keys create

此命令会返回对生产环境有效的 EAB 密钥 和公共 CA 环境中。在响应正文中,keyId 字段包含 EAB 密钥 ID,b64MacKey 字段包含 EAB HMAC。

您必须在获得 EAB 密钥后的 7 天内使用该密钥。EAB Secret 是 如果 7 天内未使用,则会失效。使用 EAB 密钥注册的 ACME 账号没有到期时间。

注册 ACME 账号

本部分将介绍如何通过以下资源注册 ACME 账号: Public CA(通过提供您刚刚获取的 EAB 密钥)。

使用常规的 ACME 客户端注册 ACME 账号,并提供 注册时出现的 EAB 密钥 ID 和 HMAC。

在 Public CA 注册 ACME 账号并绑定 ACME 关联到您用于请求 EAB 密钥的 Google Cloud 项目, 以下命令:

certbot register \
    --email "EMAIL_ADDRESS" \
    --no-eff-email \
    --server "SERVER" \
    --eab-kid "EAB_KID" \
    --eab-hmac-key "EAB_HMAC_KEY"

替换以下内容:

  • EMAIL_ADDRESS:您的电子邮件地址
  • SERVER: 生产环境或预演环境
  • EAB_KID:EAB 密钥 ID
  • EAB_HMAC_KEY:EAB HMAC 密钥

下表提供了 生产环境和预演环境:

环境 说明 ACME 目录网址
正式版 在生产环境中,您可以获取受大众信任的证书。 https://dv.acme-v02.api.pki.goog/directory
预演 预演环境会返回受公开信任的证书。 预演环境会执行与生产环境相同的验证检查。您可以使用预演环境进行集成 测试。 https://dv.acme-v02.test-api.pki.goog/directory

您只能使用一个 EAB 密钥注册一个 ACME 账号。使用 EAB 密钥注册 ACME 账号后,该 EAB 密钥会失效,并且您无法重复使用。如果您想注册多个 ACME 账号,则必须为每个账号请求一个唯一的 EAB 密钥。

请求证书

公共 CA 验证您对证书目标的控制权并确认您的 ACME 客户端能按预期执行证书管理操作后,您就可以使用常规 ACME 工作流来请求、续订和撤消证书。您可以使用 您的 ACME 客户端。要请求和续用证书,您必须完成 ACME 挑战, 例如手动 DNS 验证

如需使用手动 DNS 质询来请求证书,请运行以下命令 命令:

certbot certonly \
    --manual \
    --preferred-challenges "dns-01" \
    --server "SERVER" \
    --domains "DOMAINS"

替换以下内容:

  • SERVER:生产环境或预演环境的 ACME 目录网址 环境
  • DOMAINS:您要验证的网域的列表(以英文逗号分隔) 请求证书

清理

如果您的网域不再需要证书, 删除您创建的项目。

预演

您可以使用 Public CA 的预演环境 用于测试目的的证书预演环境颁发的证书会链接到测试根 CA。未配置为信任预演环境根证书的浏览器或其他客户端将不会信任来自预演环境的证书。如需获取在预演环境中有效的 EAB 密钥,请执行以下操作: 替换 API 端点,以将该端点用于预演环境:

gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
然后,运行账号密钥创建命令以创建预演版密钥:
gcloud publicca external-account-keys create
如需还原为生产环境的端点,请运行以下命令:
gcloud config unset api_endpoint_overrides/publicca

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

后续步骤