Revogar um certificado

Este documento descreve como revogar um certificado usando o Certificate Authority Service. A revogação de um certificado o invalida antes da data de validade, impedindo que ele seja usado para autenticação. Você pode revogar um certificado se a chave privada estiver comprometida, o certificado for substituído por um novo ou se o certificado não for mais necessário (como quando o serviço para o qual o certificado foi emitido for desativado).

Este documento é destinado a públicos-alvo do grupo de operadores de aplicativos, como desenvolvedores de aplicativos ou cientistas de dados, que gerenciam os ciclos de vida de certificados no projeto. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Sobre a revogação de certificados

O serviço de CA oferece suporte à revogação de certificados publicando listas de revogação de certificados (CRLs, na sigla em inglês). Uma CRL é uma lista de números de série de certificados que foram revogados e não são mais confiáveis. Por padrão, uma nova CRL é publicada a cada 15 minutos. Além disso, qualquer revogação de certificado bem-sucedida aciona automaticamente a geração de uma nova CRL.

Os certificados emitidos pelo serviço de CA incluem uma extensão chamada Ponto de distribuição de CRL (CDP, na sigla em inglês). Essa extensão contém o URL em que você pode encontrar e fazer o download da CRL para esse certificado. Os aplicativos cliente usam esse URL para buscar a CRL e verificar se o número de série de um certificado está presente. Se o número de série aparecer na lista, o certificado será considerado inválido, e a conexão precisará ser rejeitada.

Antes de começar

Antes de revogar um certificado, é necessário solicitar as permissões necessárias e preparar o ambiente.

Solicitar papéis do IAM

Para revogar certificados e visualizar solicitações de revogação, entre em contato com o administrador do IAM da organização para solicitar o papel de Gerente de operações do serviço de CA (certificate-authority-service-operation-manager) no namespace do projeto da autoridade de certificação.

Preparar o ambiente

Revogar um certificado

O método para revogar um certificado depende de a autoridade de certificação (CA) emissora ter o modo ACME ativado. Depois de revogar um certificado, o número de série dele aparece em todas as CRLs futuras dessa CA até que o certificado expire.

Revogar um certificado de uma CA ativada para ACME

Cada CA ativada para ACME expõe um URL de servidor ACME exclusivo no status quando estiver pronta. Para revogar um certificado de uma CA ativada para ACME, é necessário usar uma ferramenta de cliente ACME para interagir com esse URL usando o protocolo ACME.

Revogar um certificado de uma CA ativada para ACME:

  1. Busque o URL do servidor ACME para sua CA:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      get certificateauthorities CA_NAME \
      -n USER_PROJECT_NAMESPACE \
      -ojson | jq -r '.status.acme.uri'
    

    Substitua:

    • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API Management.
    • CA_NAME: o nome da CA ativada para ACME (raiz ou subordinada).
    • USER_PROJECT_NAMESPACE: o namespace do projeto.
  2. Use o URL recebido com a ferramenta de cliente ACME de sua escolha para emitir uma solicitação de revogação. Consulte a documentação do cliente ACME específico para mais detalhes.

Revogar um certificado de uma CA desativada para ACME

Se o modo ACME estiver desativado na CA, revogue um certificado criando e aplicando um recurso personalizado RevokeCertificateRequest:

  1. Crie um arquivo YAML de recurso personalizado RevokeCertificateRequest (como revoke-cert-request.yaml):

    apiVersion: pki.security.gdc.goog/v1
    kind: RevokeCertificateRequest
    metadata:
      name: REVOKE_CERT_REQ_NAME
      namespace: USER_PROJECT_NAMESPACE
    spec:
      certificateRequestRef:
        name: CERT_REQ_NAME
        namespace: USER_PROJECT_NAMESPACE
      reason: REASON
    

    Substitua:

    • REVOKE_CERT_REQ_NAME: o nome definido pelo usuário para a solicitação de revogação.
    • USER_PROJECT_NAMESPACE: o namespace do projeto.
    • CERT_REQ_NAME: o nome do recurso CertificateRequest associado ao certificado que você quer revogar.
    • REASON: o motivo da revogação. Os motivos válidos são: Unspecified, KeyCompromise, CaCompromise, AffiliationChanged, Superseded, CessationOfOperation, CertificateHold, RemoveFromCrl, PrivilegeWithdrawn e AaCompromise.
  2. Aplique o recurso personalizado:

    kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    Substitua MANAGEMENT_API_SERVER_KUBECONFIG pelo caminho para o arquivo kubeconfig do servidor da API Management.

  3. Verifique se a solicitação de revogação de certificado está pronta:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n USER_PROJECT_NAMESPACE \
      get revokecertificaterequest.pki.security.gdc.goog/REVOKE_CERT_REQ_NAME \
      -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
    

    Substitua:

    • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API Management.
    • USER_PROJECT_NAMESPACE: o namespace do projeto.
    • REVOKE_CERT_REQ_NAME: o nome da solicitação de revogação.

    A saída será assim:

    {
      "lastTransitionTime": "2025-08-19T23:20:22Z",
      "message": "RevokeCertificateRequest reconciled",
      "observedGeneration": 1,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

    O processo está concluído, e o número de série do certificado é adicionado à próxima CRL gerada.

Listar solicitações de certificados revogados

Liste todos os recursos RevokeCertificateRequest em um namespace do projeto:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
  -n USER_PROJECT_NAMESPACE \
  get revokecertificaterequests

Substitua:

  • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API Management.
  • USER_PROJECT_NAMESPACE: o namespace do projeto.

A saída será assim:

NAMESPACE    NAME                      READY   AGE
foo          revoke-cert-req           True    30s