Revogue certificados

Esta página explica como revogar certificados.

O Certificate Authority Service suporta a revogação de certificados através da publicação periódica de Listas de revogação de certificados (LRCs). Só pode revogar certificados emitidos por conjuntos de ACs no nível Enterprise.

Antes de começar

Certifique-se de que tem a função de gestão de identidade e de acesso (IAM) de gestor de operações do serviço de autoridade de certificação (roles/privateca.caManager) ou de administrador do serviço de AC (roles/privateca.admin). Para mais informações sobre as funções de IAM predefinidas para o serviço de AC, consulte o artigo Controlo de acesso com a IAM.

Para ver informações sobre como conceder uma função do IAM, consulte o artigo Conceder uma única função.

Ative a publicação de CRL

Para revogar os certificados emitidos por um conjunto de ACs, tem de ativar a publicação de LCRs no conjunto de ACs. Pode ativar a publicação de CRLs enquanto cria um conjunto de ACs. Se estiver inicialmente desativada, pode ativar a publicação de CRL mais tarde.

Depois de ativar a publicação de CRLs, é publicada uma nova CRL diariamente e é válida durante 7 dias. Também é publicada uma nova CRL no prazo de 15 minutos após a revogação de um novo certificado.

Os certificados contêm uma extensão de ponto de distribuição da CRL (CDP) que especifica onde podem ser encontradas as informações da CRL para o certificado. Por predefinição, quando ativa a publicação de CRL, o serviço de AC preenche a extensão CDP para todos os certificados emitidos pela AC com a localização de publicação do Cloud Storage que a AC usa. Para definir os seus próprios links para aparecerem nesta extensão de certificado, defina o UserDefinedAccessUrls. Para manter o link de localização de publicação do Cloud Storage predefinido e também adicionar os seus próprios links, adicione o link do Cloud Storage à lista de links que especificar.

Para ativar a publicação de CRL num conjunto de ACs, faça o seguinte:

Consola

  1. Aceda à página Serviço de autoridade de certificação na Google Cloud consola.

    Certificate Authority Service

  2. Clique no separador Gestor do conjunto de ACs.

  3. Clique no grupo de PA que quer editar ou clique no grupo de PA que tem o PA que quer editar.

  4. Na página CA pool, clique em

    Editar.

  5. Clique em Seguinte até aceder à secção Configurar opções de publicação.

  6. Clique no botão de ativar/desativar Publicar CRL no contentor do GCS para ACs neste conjunto.

gcloud

Execute o seguinte comando:

gcloud privateca pools update POOL_ID --location LOCATION --publish-crl

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 Localizações.

Para mais informações sobre o comando gcloud privateca pools update, consulte gcloud privateca pools update.

O serviço de AC aplica um limite de 500 000 certificados revogados não expirados por LRC.

Revogue um certificado

O serviço de AC permite revogar certificados por número de série ou nome do recurso e também aceita um motivo opcional. Após a revogação de um certificado, o respetivo número de série e motivo da revogação são apresentados em todas as CRLs futuras até o certificado atingir a data de validade. Também é gerada uma LRC fora da banda no prazo de 15 minutos após a revogação.

Para revogar um certificado, siga os passos seguintes:

Consola

  1. Aceda à página Serviço de autoridade de certificação na Google Cloud consola.

    Aceda ao serviço de autoridade de certificação

  2. Clique no separador Gestor de certificados privados.
  3. Na lista de certificados, clique em Ver mais na linha do certificado que quer eliminar.
  4. Clique em Revogar.
  5. Na caixa de diálogo apresentada, clique em Confirmar.

gcloud

  • Para revogar um certificado através do respetivo nome do recurso, execute o seguinte comando:

    gcloud privateca certificates revoke \
        --certificate CERT_ID \
        --issuer-pool POOL_ID \
        --issuer-location ISSUER_LOCATION \
        --reason REVOCATION_REASON
    

    Substitua o seguinte:

    • CERT_ID: o identificador exclusivo do certificado que quer revogar.
    • POOL_ID: o nome do conjunto de ACs que emitiu o certificado.
    • ISSUER_LOCATION: a localização do grupo de ACs emissor.
    • REVOCATION_REASON: o motivo da revogação do certificado.

    A flag --reason é opcional. Para mais informações acerca desta flag, consulte --reason ou use o seguinte comando gcloud com a flag --help:

    gcloud privateca certificates revoke --help
    

    Para mais informações sobre o comando gcloud privateca certificates revoke command, consulte gcloud privateca certificates revoke.

  • Para revogar um certificado através do respetivo número de série, execute o seguinte comando:

    gcloud privateca certificates revoke \
        --serial-number SERIAL_NUMBER \
        --issuer-pool POOL_ID \
        --issuer-location ISSUER_LOCATION \
        --reason REVOCATION_REASON
    

    Substitua o seguinte:

    • SERIAL_NUMBER: o número de série do certificado.
    • POOL_ID: o nome do grupo de ACs que emitiu o certificado.
    • ISSUER_LOCATION: a localização do grupo de ACs emissor.
    • REVOCATION_REASON: o motivo da revogação do certificado.

    Para mais informações sobre o comando gcloud privateca certificates revoke command, consulte gcloud privateca certificates revoke.

    Quando lhe for pedido que confirme, pode fazê-lo introduzindo "Y":

    You are about to revoke Certificate [projects/PROJECT_ID/locations/CA_POOL_REGION/caPools/POOL_ID/certificates/CERT_ID]
    
    Do you want to continue? (Y/n) Y
    Revoked certificate [projects/PROJECT_ID/locations/CA_POOL_REGION/caPools/POOL_ID/certificates/CERT_ID] at DATE_TIME.
    
    

Ir

Para se autenticar no serviço de AC, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import (
	"context"
	"fmt"
	"io"

	privateca "cloud.google.com/go/security/privateca/apiv1"
	"cloud.google.com/go/security/privateca/apiv1/privatecapb"
)

// Revoke an issued certificate. Once revoked, the certificate will become invalid
// and will expire post its lifetime.
func revokeCertificate(
	w io.Writer,
	projectId string,
	location string,
	caPoolId string,
	certId string) error {
	// projectId := "your_project_id"
	// location := "us-central1"		// For a list of locations, see: https://cloud.google.com/certificate-authority-service/docs/locations.
	// caPoolId := "ca-pool-id"			// The CA Pool id in which the certificate exists.
	// certId := "certificate"			// A unique name for the certificate.

	ctx := context.Background()
	caClient, err := privateca.NewCertificateAuthorityClient(ctx)
	if err != nil {
		return fmt.Errorf("NewCertificateAuthorityClient creation failed: %w", err)
	}
	defer caClient.Close()

	fullCertName := fmt.Sprintf("projects/%s/locations/%s/caPools/%s/certificates/%s", projectId, location,
		caPoolId, certId)

	// Create the RevokeCertificateRequest and specify the appropriate revocation reason.
	// See https://pkg.go.dev/cloud.google.com/go/security/privateca/apiv1/privatecapb#RevokeCertificateRequest.
	req := &privatecapb.RevokeCertificateRequest{
		Name:   fullCertName,
		Reason: privatecapb.RevocationReason_PRIVILEGE_WITHDRAWN,
	}

	_, err = caClient.RevokeCertificate(ctx, req)
	if err != nil {
		return fmt.Errorf("RevokeCertificate failed: %w", err)
	}

	fmt.Fprintf(w, "Certificate %s revoked", certId)

	return nil
}

Java

Para se autenticar no serviço de AC, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


import com.google.api.core.ApiFuture;
import com.google.cloud.security.privateca.v1.Certificate;
import com.google.cloud.security.privateca.v1.CertificateAuthorityServiceClient;
import com.google.cloud.security.privateca.v1.CertificateName;
import com.google.cloud.security.privateca.v1.RevocationReason;
import com.google.cloud.security.privateca.v1.RevokeCertificateRequest;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class RevokeCertificate {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // location: For a list of locations, see:
    // https://cloud.google.com/certificate-authority-service/docs/locations
    // poolId: Id for the CA pool which contains the certificate.
    // certificateName: Name of the certificate to be revoked.
    String project = "your-project-id";
    String location = "ca-location";
    String poolId = "ca-pool-id";
    String certificateName = "certificate-name";
    revokeCertificate(project, location, poolId, certificateName);
  }

  // Revoke an issued certificate. Once revoked, the certificate will become invalid and will expire
  // post its lifetime.
  public static void revokeCertificate(
      String project, String location, String poolId, String certificateName)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `certificateAuthorityServiceClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (CertificateAuthorityServiceClient certificateAuthorityServiceClient =
        CertificateAuthorityServiceClient.create()) {

      // Create Certificate Name.
      CertificateName certificateNameParent =
          CertificateName.newBuilder()
              .setProject(project)
              .setLocation(location)
              .setCaPool(poolId)
              .setCertificate(certificateName)
              .build();

      // Create Revoke Certificate Request and specify the appropriate revocation reason.
      RevokeCertificateRequest revokeCertificateRequest =
          RevokeCertificateRequest.newBuilder()
              .setName(certificateNameParent.toString())
              .setReason(RevocationReason.PRIVILEGE_WITHDRAWN)
              .build();

      // Revoke certificate.
      ApiFuture<Certificate> response =
          certificateAuthorityServiceClient
              .revokeCertificateCallable()
              .futureCall(revokeCertificateRequest);
      Certificate certificateResponse = response.get();

      System.out.println("Certificate Revoked: " + certificateResponse.getName());
    }
  }
}

Python

Para se autenticar no serviço de AC, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


import google.cloud.security.privateca_v1 as privateca_v1


def revoke_certificate(
    project_id: str,
    location: str,
    ca_pool_name: str,
    certificate_name: str,
) -> None:
    """
    Revoke an issued certificate. Once revoked, the certificate will become invalid and will expire post its lifetime.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        location: location you want to use. For a list of locations, see: https://cloud.google.com/certificate-authority-service/docs/locations.
        ca_pool_name: name for the CA pool which contains the certificate.
        certificate_name: name of the certificate to be revoked.
    """

    caServiceClient = privateca_v1.CertificateAuthorityServiceClient()

    # Create Certificate Path.
    certificate_path = caServiceClient.certificate_path(
        project_id, location, ca_pool_name, certificate_name
    )

    # Create Revoke Certificate Request and specify the appropriate revocation reason.
    request = privateca_v1.RevokeCertificateRequest(
        name=certificate_path, reason=privateca_v1.RevocationReason.PRIVILEGE_WITHDRAWN
    )
    result = caServiceClient.revoke_certificate(request=request)

    print("Certificate revoke result:", result)

O que se segue?