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 Google Cloud CLI executando o seguinte comando:

    gcloud init

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

  • Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto do Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  • Ative a API Certificate Authority Service, se ela ainda não estiver ativada:

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    gcloud services enable privateca.googleapis.com

  • Verifique se o faturamento está ativado para o projeto do Google Cloud .

  • Configure um local padrão para uso nos comandos gcloud neste 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ções ou inatividade das cargas de trabalho.

Para criar um pool de ACs na camada 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 conferir a lista completa de locais, consulte Locais.

Os nomes de recursos podem conter letras, números, hifens (-) e sublinhados (_) e ter até 63 caracteres.

Crie uma AC raiz:

Um pool de CA é criado vazio. Para solicitar certificados de um pool de ACs, é necessário adicionar uma AC 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 conferir a lista completa de locais, consulte Locais.

O CA Service retorna a seguinte saída 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 CAs subordinadas

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 AC subordinada. Para conferir 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 em que a chave está localizada
  • KEY: o nome da chave;
  • KEY_VERSION: a versão da chave.

A instrução a seguir é 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 AC.

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

    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 serviço de CA 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 ACs, a AC 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 CAs
  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 conferir 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.

    Excluir um projeto do Google Cloud :

    gcloud projects delete PROJECT_ID

A seguir