Emitir um certificado usando a Google Cloud CLI

Nesta página, explicamos como gerar ou emitir certificados pelo Certificate Authority Service usando a Google Cloud CLI.

O CA Service permite implantar e gerenciar ACs particulares sem precisar gerenciar a infraestrutura.

Antes de começar

  • Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:

    gcloud init

    Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  • Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable privateca.googleapis.com

  • Verify that billing is enabled for your Google Cloud project.

  • Configure um local padrão para usar nos comandos gcloud deste início rápido.

    gcloud config set privateca/location LOCATION
    

    Os recursos do serviço de CA, como pools e CAs, ficam em um único Google Cloud local que não pode ser alterado depois da criação desses recursos.

Criar um pool de CA

Um pool de autoridade certificadora (CA) é uma coleção de várias CAs. Um pool de ACs permite alternar as cadeias de confiança sem interrupção ou inatividade das cargas de trabalho.

Para criar um pool de CAs na versão Enterprise, execute o seguinte comando:

gcloud privateca pools create POOL_ID --location LOCATION --tier "enterprise"

Substitua:

  • POOL_ID: o nome do pool de ACs.
  • LOCATION: o local do pool de ACs. Para a lista completa de locais, consulte Locais.

Os nomes de todos os recursos do CA Service precisam conter apenas os caracteres permitidos, que são todas as letras, números, hifens e sublinhados. O comprimento máximo permitido de um nome é de 63 caracteres.

Crie uma AC raiz:

Um pool de CAs fica vazio na criação. Para solicitar certificados de um pool de CA, é necessário adicionar uma CA a ele.

Para criar uma AC raiz e adicioná-la ao pool de ACs criado, execute o seguinte comando:

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

Substitua:

  • CA_ID: o nome da CA raiz.
  • POOL_ID: o nome do pool de ACs.
  • LOCATION: o local do pool de ACs. Para a lista completa de locais, consulte Locais.

O serviço de CA retorna o seguinte comando ao criar a CA raiz:

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

Ative a AC raiz inserindo y quando solicitado pela CLI gcloud.

Opcional: criar um pool de CA subordinada

Para criar um pool de CAs subordinadas, execute o seguinte comando:

    gcloud privateca pools create SUBORDINATE_POOL_ID
        --location LOCATION
        --tier TIER

Substitua:

  • SUBORDINATE_POOL_ID: o ID do pool de AC subordinada.
  • LOCATION: o local do pool de ACs subordinadas. Para a lista completa de locais, consulte Locais.
  • TIER: o nível da CA subordinada, devops ou enterprise.

Opcional: crie uma AC subordinada assinada por uma AC raiz armazenada em Google Cloud

Para criar uma AC subordinada no pool de AC subordinada criado na etapa anterior, execute o seguinte comando:

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
        --location=LOCATION \
        --pool=SUBORDINATE_POOL_ID \
        --issuer-pool=POOL_ID \
        --issuer-location=ISSUER_LOCATION \
        --from-ca=EXISTING_CA_ID \
        --kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION \"

Substitua:

  • SUBORDINATE_CA_ID: o ID da CA subordinada.
  • LOCATION: o local da CA subordinada. Para ver a lista completa de locais, consulte Locais.
  • SUBORDINATE_POOL_ID: o ID do pool de AC subordinada criado na seção anterior.
  • POOL_ID: o ID do pool de ACs principal.
  • ISSUER_LOCATION: o local do certificado.
  • EXISTING_CA_ID: o ID da CA de origem.
  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: a localização do keyring.
  • KEY_RING: o nome do keyring onde a chave está localizada.
  • KEY: o nome da chave;
  • KEY_VERSION: a versão da chave.

A seguinte instrução é retornada quando a CA subordinada é criada.

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].

Ative a CA subordinada inserindo y quando solicitado pela CLI gcloud.

Criar um certificado

Para usar a CA recém-criada e criar um certificado, faça o seguinte:

  1. Instale a biblioteca de criptografia Pyca usando o comando pip.

      pip install --user "cryptography>=2.2.0"
    

    O serviço de AC usa a biblioteca de criptografia Pyca para gerar e armazenar um novo par de chaves assimétricas na sua máquina local. Essa chave nunca é enviada ao serviço de CA.

  2. Para permitir que o SDK Google Cloud use a biblioteca de criptografia Pyca, é necessário ativar os pacotes de sites.

    macOS ou Linux

    export CLOUDSDK_PYTHON_SITEPACKAGES=1
    

    Windows

    set CLOUDSDK_PYTHON_SITEPACKAGES=1
    
  3. Crie um certificado.

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

    Substitua:

    • POOL_ID: o ID do recurso do pool de ACs que você criou.
    • ISSUER_LOCATION: o local da autoridade certificadora que emitiu o certificado digital.

    O CA Service retorna a seguinte resposta:

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

Limpar

Faça uma limpeza excluindo o pool de CA, a CA e o projeto que você criou para este guia de início rápido.

  1. Revogue o certificado.

      Para revogar um certificado, execute o seguinte comando:

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

      Substitua:

      • CERT_NAME: o nome do certificado que você quer revogar.
      • POOL_ID: o nome do pool de ACs que emitiu o certificado.
      • LOCATION: o local do pool de ACs.
  2. Exclua a CA.

    Só é possível excluir uma CA depois de revogar todos os certificados emitidos por ela.

    1. Desative a CA.

      gcloud privateca roots disable CA_ID --pool=POOL_ID --location=LOCATION
      

      Substitua:

      • CA_ID: o ID do recurso da CA.
      • POOL_ID: o ID do recurso do pool de ACs.
      • LOCATION: o local do pool de ACs. Para a lista completa de locais, consulte Locais.
    2. Exclua a CA.

      gcloud privateca roots delete CA_ID --pool=POOL_ID --location=LOCATION
      

    O estado da CA muda para Deleted. O CA Service exclui permanentemente a CA 30 dias após o início da exclusão.

  3. Exclua o pool de ACs.

    Só é possível excluir um pool de CA depois que a CA nele for excluída permanentemente.

    gcloud privateca pools delete POOL_ID --location=LOCATION
    
  4. Exclua o projeto.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

A seguir