Révoquer les certificats

Cette page explique comment révoquer des certificats.

Certificate Authority Service prend en charge la révocation de certificats en publiant régulièrement des listes de révocation de certificats (LRC). Vous ne pouvez révoquer que les certificats émis par des pools d'autorités de certification au niveau Enterprise.

Avant de commencer

Assurez-vous de disposer du rôle IAM (Identity and Access Management) "Gestionnaire des opérations du service d'autorité de certification" (roles/privateca.caManager) ou "Administrateur du service d'autorité de certification" (roles/privateca.admin). Pour en savoir plus sur les rôles IAM prédéfinis pour le service CA, consultez la page Contrôle des accès avec IAM.

Pour en savoir plus sur l'attribution d'un rôle IAM, consultez la section Attribuer un rôle unique.

Activer la publication de la liste de révocation de certificats

Pour révoquer les certificats émis par un pool d'autorités de certification, vous devez activer la publication de la LRC sur le pool d'autorités de certification. Vous pouvez activer la publication de la LRC lorsque vous créez un pool d'autorités de certification. Si elle est initialement désactivée, vous pouvez activer la publication de la LRC ultérieurement.

Une fois la publication de la LRC activée, une nouvelle LRC est publiée quotidiennement et est valide pendant sept jours. Une nouvelle LRC est également publiée dans les 15 minutes suivant toute nouvelle révocation de certificat.

Pour activer la publication de la LRC sur un pool d'autorités de certification, procédez comme suit:

Console

  1. Accédez à la page Certificate Authority Service (Service d'autorité de certification) dans la console Google Cloud.

    Certificate Authority Service

  2. Cliquez sur l'onglet Gestionnaire de pool d'autorités de certification.

  3. Cliquez sur le pool de certificats d'autorité de certification que vous souhaitez modifier ou sur le pool de certificats d'autorité de certification contenant la certification que vous souhaitez modifier.

  4. Sur la page Pool de CA, cliquez sur Modifier.

  5. Cliquez sur Suivant jusqu'à ce que vous atteigniez la section Configurer les options de publication.

  6. Cliquez sur le bouton Publier la LRC dans le bucket GCS pour les autorités de certification de ce pool.

gcloud

Exécutez la commande suivante :

gcloud privateca pools update POOL_ID \
  --publish-crl

Remplacez POOL_ID par le nom du pool d'autorités de certification.

Pour en savoir plus sur la commande gcloud privateca pools update, consultez la page sur la commande gcloud privateca pools update.

CA Service applique une limite de 500 000 certificats révoqués non expirés par LRC.

Révoquer un certificat

Le service CA permet de révoquer des certificats par numéro de série ou nom de ressource, et accepte également une raison facultative. Une fois qu'un certificat a été révoqué, son numéro de série et la raison de la révocation apparaissent dans toutes les futures LRC jusqu'à la date d'expiration du certificat. Une liste de révocation hors bande est également générée dans les 15 minutes suivant la révocation.

Pour révoquer un certificat, procédez comme suit:

Console

  1. Accédez à la page Certificate Authority Service (Service d'autorité de certification) dans la console Google Cloud.

    Accéder à Certificate Authority Service

  2. Cliquez sur l'onglet Gestionnaire de certificats privé.
  3. Dans la liste des certificats, cliquez sur Afficher plus sur la ligne du certificat que vous souhaitez supprimer.
  4. Cliquez sur Révoquer.
  5. Dans la boîte de dialogue qui s'ouvre, cliquez sur Confirmer.

gcloud

  • Pour révoquer un certificat à l'aide de son nom de ressource, exécutez la commande suivante:

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

    Remplacez les éléments suivants :

    • CERT_ID: identifiant unique du certificat que vous souhaitez révoquer.
    • POOL_ID: nom du pool d'autorités de certification ayant délivré le certificat.
    • REVOCATION_REASON: raison de la révocation du certificat.

    L'option --reason est facultative. Pour en savoir plus sur cette option, consultez --reason ou exécutez la commande gcloud suivante avec l'option --help:

    gcloud privateca certificates revoke --help
    

    Pour en savoir plus sur la commande gcloud privateca certificates revoke, consultez Révoquer des certificats gcloud privateca.

  • Pour révoquer un certificat à l'aide de son numéro de série, exécutez la commande suivante:

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

    Remplacez les éléments suivants :

    • SERIAL_NUMBER: numéro de série du certificat.
    • POOL_ID: nom du pool d'autorités de certification ayant délivré le certificat.
    • REVOCATION_REASON: raison de la révocation du certificat.

    Pour en savoir plus sur la commande gcloud privateca certificates revoke, consultez Révoquer des certificats gcloud privateca.

    Lorsque vous êtes invité à confirmer, vous pouvez le faire en saisissant "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.
    
    

Go

Pour vous authentifier auprès du service d'autorité de certification, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès du service d'autorité de certification, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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

Pour vous authentifier auprès du service d'autorité de certification, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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)

Étape suivante