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 chaque jour et est valable sept jours. Une nouvelle LRC est également publiée dans les 15 minutes suivant toute nouvelle révocation de certificat.

Les certificats contiennent une extension CDP (Certificate Revocation Distribution Point) qui spécifie l'emplacement des informations de la liste de révocation de certificats pour le certificat. Par défaut, lorsque vous activez la publication de la liste de révocation de certificats, CA Service renseigne l'extension CDP pour tous les certificats émis par l'autorité de certification avec l'emplacement de publication Cloud Storage qu'elle utilise. Pour définir vos propres liens dans cette extension de certificat, définissez UserDefinedAccessUrls. Pour conserver le lien vers l'emplacement de publication Cloud Storage par défaut et ajouter vos propres liens, ajoutez le lien Cloud Storage à la liste des liens que vous spécifiez.

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 l'autorité de certification que vous souhaitez modifier.

  4. Sur la page Pool d'autorités de certification, 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 ci-dessous.

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

Remplacez les éléments suivants :

  • POOL_ID: nom du pool d'autorités de certification.
  • LOCATION: emplacement du pool d'autorités de certification. Pour obtenir la liste complète des emplacements, consultez la section Emplacements.

Pour en savoir plus sur la commande gcloud privateca pools update, consultez la page 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 par 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 le motif de révocation apparaissent dans toutes les futures listes de révocation de certificats jusqu'à ce que le certificat arrive à expiration. 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 \
        --issuer-location ISSUER_LOCATION \
        --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 émis le certificat.
    • ISSUER_LOCATION: emplacement du pool d'autorités de certification émettrices.
    • 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évocation de certificats privateca gcloud.

  • 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 \
        --issuer-location ISSUER_LOCATION \
        --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.
    • ISSUER_LOCATION: emplacement du pool d'autorités de certification émettrices.
    • REVOCATION_REASON: motif de révocation du certificat.

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

    Lorsque vous êtes invité à confirmer, saisissez "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