Emita um certificado através da Google Cloud CLI

Esta página explica como pode gerar ou emitir certificados através do Certificate Authority Service com a CLI gcloud.

O serviço de AC permite-lhe implementar e gerir ACs privadas sem gerir a infraestrutura.

Antes de começar

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

    gcloud init

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a 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 uma localização predefinida para utilização nos comandos gcloud neste início rápido.

    gcloud config set privateca/location LOCATION
    

    Os recursos do serviço de AC, como os conjuntos de ACs e as ACs, residem numa única Google Cloud localização que não pode alterar depois de criar estes recursos.

Crie um grupo de ACs

Um grupo de autoridades de certificação (ACs) é uma coleção de várias ACs. Um conjunto de ACs permite a rotação das cadeias de confiança sem qualquer interrupção ou tempo de inatividade para cargas de trabalho.

Para criar um conjunto de ACs no nível Enterprise, execute o seguinte comando:

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

Substitua o seguinte:

  • POOL_ID: o nome do grupo de ACs.
  • LOCATION: a localização do grupo de ACs. Para ver a lista completa de localizações, consulte o artigo Localizações.

Os nomes de todos os recursos do serviço de CA têm de conter apenas os carateres permitidos, que são todas as letras, números, hífenes e sublinhados. O comprimento máximo permitido de um nome é de 63 carateres.

Crie uma AC de raiz

Um conjunto de CA está vazio no momento da criação. Para pedir certificados a um conjunto de ACs, tem de adicionar uma AC ao mesmo.

Para criar uma CA de raiz e adicioná-la ao conjunto de CAs que criou, execute o seguinte comando:

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

Substitua o seguinte:

  • CA_ID: o nome da AC de raiz.
  • POOL_ID: o nome do grupo de ACs.
  • LOCATION: a localização do grupo de ACs. Para ver a lista completa de localizações, consulte Localizações.

O serviço de CA devolve o seguinte comando quando cria a CA de raiz:

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

Ative a AC raiz introduzindo y quando lhe for pedido pela CLI gcloud.

Opcional: crie um grupo de CAs subordinadas

Para criar um conjunto de ACs subordinado, execute o seguinte comando:

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

Substitua o seguinte:

  • SUBORDINATE_POOL_ID: o ID do conjunto de ACs subordinado.
  • LOCATION: a localização do conjunto de ACs subordinadas. Para ver a lista completa de localizações, consulte Localizações.
  • TIER: o nível da CA subordinada, devops ou enterprise.

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

Para criar uma AC subordinada no conjunto de ACs subordinadas que criou no passo 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 o seguinte:

  • SUBORDINATE_CA_ID: o ID da AC subordinada.
  • LOCATION: a localização da CA subordinada. Para ver a lista completa de localizações, consulte Localizações.
  • SUBORDINATE_POOL_ID: o ID do conjunto de AC subordinado que criou na secção anterior.
  • POOL_ID: o ID do conjunto de ACs principal.
  • ISSUER_LOCATION: a localização do certificado.
  • EXISTING_CA_ID: o ID da AC de origem.
  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: a localização do conjunto de chaves.
  • KEY_RING: o nome do conjunto de chaves onde a chave se encontra.
  • KEY: o nome da chave.
  • KEY_VERSION: a versão da chave.

A seguinte declaração é devolvida 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 AC subordinada introduzindo y quando lhe for pedido pela CLI gcloud.

Crie um certificado

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

  1. Instale a biblioteca de criptografia Pyca com 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 no seu computador local. Esta chave nunca é enviada para o serviço de AC.

  2. Para permitir que o Google Cloud SDK use a biblioteca de criptografia Pyca, tem de 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 o seguinte:

    • POOL_ID: o ID do recurso do conjunto de ACs que criou.
    • ISSUER_LOCATION: a localização da autoridade de certificação que emitiu o certificado digital.

    O serviço de CA devolve a seguinte resposta:

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

Limpar

Faça a limpeza eliminando o conjunto de ACs, a AC e o projeto que criou para este 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 o seguinte:

      • CERT_NAME: o nome do certificado que quer revogar.
      • POOL_ID: o nome do conjunto de ACs que emitiu o certificado.
      • LOCATION: a localização do grupo de ACs.
  2. Elimine a CA.

    Só pode eliminar uma AC depois de revogar todos os certificados emitidos por esta.

    1. Desative a AC.

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

      Substitua o seguinte:

      • CA_ID: o ID do recurso da AC.
      • POOL_ID: o ID do recurso do conjunto de ACs.
      • LOCATION: a localização do grupo de ACs. Para ver a lista completa de localizações, consulte Localizações.
    2. Elimine a CA.

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

    O estado da CA é alterado para Deleted. O CA elimina permanentemente o CA 30 dias após iniciar a eliminação.

  3. Elimine o conjunto de CA.

    Só pode eliminar um conjunto de ACs depois de a AC no mesmo ter sido eliminada permanentemente.

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

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

O que se segue?