使用 Google Cloud CLI 签发证书

本页面介绍了如何创建证书授权机构 (CA) 池和 使用 Google Cloud CLI 颁发证书。

借助 CA Service,您可以部署和管理私有 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.

  • Enable the Certificate Authority Service API:

    gcloud services enable privateca.googleapis.com

  • Make sure that billing is enabled for your Google Cloud project.

  • 配置一个默认位置,以便在本快速入门中的 gcloud 命令中使用。

    gcloud config set privateca/location LOCATION
    

    CA 服务资源(例如 CA 池和 CA)位于单个 Google Cloud 位置,您在创建这些资源后便无法更改该位置。

创建 CA 池

证书授权机构 (CA) 池是包含多个 CA 的集合。CA 池能够轮替信任链,而不中断或停止工作负载。

如需在企业版层级创建 CA 池,请运行以下命令:

gcloud privateca pools create POOL_ID --tier "enterprise"

POOL_ID 替换为 CA 池的名称。

所有 CA 服务资源的名称都必须仅包含 允许使用的字符,即字母、数字、连字符和下划线。 名称的最大允许长度为 63 个字符。

创建根 CA

CA 池在创建时为空。如需从 CA 池请求证书,您必须 请在其中添加 CA

如需创建根 CA 并将其添加到您创建的 CA 池中,请运行以下命令 命令:

gcloud privateca roots create CA_ID --pool POOL_ID --subject "CN=Example Prod Root CA, O=Google"

替换以下内容:

  • CA_ID:根 CA 的名称。
  • POOL_ID:CA 池的名称。

CA Service 在创建根 CA 时会返回以下命令:

Created Certificate Authority [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID]

在 gcloud CLI 提示时,通过输入 y 来启用根 CA。

现在,您已经拥有包含根 CA 的 CA 池,接下来可以继续创建证书了。

创建证书

如需使用新创建的 CA 创建证书,请执行以下操作:

  1. 使用 pip 命令安装 Pyca 加密库。

      pip install --user "cryptography>=2.2.0"
    

    CA 服务使用 Pyca 加密库在您的本地计算机上生成并存储新的非对称密钥对。此键永远不会 发送到 CA 服务。

  2. 如需允许 Google Cloud SDK 使用 Pyca 加密库,您必须启用网站软件包。

    macOS 或 Linux

    export CLOUDSDK_PYTHON_SITEPACKAGES=1
    

    Windows

    set CLOUDSDK_PYTHON_SITEPACKAGES=1
    
  3. 创建证书。

      gcloud privateca certificates create \
          --issuer-pool POOL_ID \
          --subject "CN=Example Prod,O=Google" \
          --generate-key \
          --key-output-file=./key \
          --cert-output-file=./cert.pem
    

    POOL_ID 替换为证书授权机构的资源 ID 您创建的池

    CA Service 会返回以下响应:

      Created Certificate [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates/CERTIFICATE_ID]
    

清理

通过删除 CA 池、CA 以及为此创建的项目进行清理 快速入门。

  1. 撤消证书。

      如需撤消证书,请运行以下命令:

        gcloud privateca certificates revoke --certificate CERT_NAME --issuer-pool POOL_ID
        

      请替换以下内容:

      • CERT_NAME:您要撤消的证书的名称。
      • POOL_ID:颁发证书的 CA 池的名称。
  2. 删除 CA。

    只有在撤消该 CA 颁发的所有证书后,您才能删除该 CA。

    1. 停用 CA。

      gcloud privateca roots disable CA_ID --pool=POOL_ID
      

      替换以下内容:

      • CA_ID:CA 的资源 ID。
      • POOL_ID:CA 池的资源 ID。
    2. 删除 CA。

      gcloud privateca roots delete CA_ID --pool=POOL_ID
      

    CA 状态会更改为 Deleted。CA 服务会在您发起删除操作 30 天后永久删除 CA。

  3. 删除 CA 池。

    只有在 CA 池中的 CA 被永久删除后,您才能删除该 CA 池 已删除。

    gcloud privateca pools delete POOL_ID
    
  4. 删除项目。

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

后续步骤