使用 Public CA 和 ACME 客户端请求证书
本教程将引导您使用 Google Cloud CLI 向 Public Certificate Authority 请求 TLS 证书。如需了解 Public Certificate Authority 使用的根 CA 和中间 CA,请参阅 Google Trust Services。从 Public CA 请求证书不收取任何费用。
准备工作
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
选择或创建项目所需的角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要拥有 Project Creator 角色 (
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
确保您具有 Public CA External Account Key Creator (
roles/publicca.externalAccountKeyCreator) IAM 角色。如需授予此角色,请运行以下命令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USER \ --role=roles/publicca.externalAccountKeyCreator
替换以下内容:
PROJECT_ID:您的 Google Cloud 项目的 IDUSER:您要向其分配 IAM 角色的用户的唯一标识符
如需了解如何授予 IAM 角色,请参阅管理对项目、文件夹和组织的访问权限。
启用 Public CA API(如果尚未启用):
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。gcloud services enable publicca.googleapis.com
安装客户端
如需开始使用 Public CA,您必须安装 ACME 客户端。以下说明以 Certbot 为 ACME 客户端。如果其他 ACME 客户端支持外部账号绑定 (EAB),您也可以使用该客户端。
如需安装 Certbot,请参阅 Certbot 说明。
请务必将客户端指向 Public CA 服务器。ACME 客户端首次与 Public CA 互动时,会生成新的密钥对并将公钥发送给 Public CA。
请求 EAB 密钥 ID 和 HMAC
安装 ACME 客户端后,您必须向 Public CA 注册您的 ACME 账号,才能向 Public CA 请求证书。EAB Secret 可帮助您向 Public CA 注册 ACME 账号。EAB 密文由密钥 ID 和基于哈希的消息认证码 (HMAC) 组成。
您可以使用Public CA API 或 Google Cloud CLI 来请求 EAB 密钥。
如需请求 EAB 密钥 ID 和 HMAC,请运行以下命令:
gcloud publicca external-account-keys create
此命令会返回在 Public CA 的生产环境中有效的 EAB Secret。在响应正文中,keyId 字段包含 EAB 密钥 ID,b64MacKey 字段包含 EAB HMAC。
您必须在获取 EAB 密钥后的 7 天内使用该密钥。如果您未在 7 天内使用 EAB 密钥,该密钥将失效。使用 EAB 密文注册的 ACME 账号没有有效期。
注册 ACME 账号
本部分介绍了如何通过提供您刚刚获得的 EAB 密钥向 Public CA 注册 ACME 账号。
使用常规 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:生产环境或预发布环境的 ACME 目录网址EAB_KID:EAB 密钥 IDEAB_HMAC_KEY:EAB HMAC 密钥
下表提供了生产环境和预演环境的说明和 ACME 目录网址:
| 环境 | 说明 | 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 密钥。
申请证书
在 Public 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
删除 Google Cloud 项目:
gcloud projects delete PROJECT_ID