Révoquer les certificats

Cette page explique comment révoquer des certificats.

Certificate Authority Service est compatible avec 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 dans le niveau Enterprise.

Avant de commencer

Assurez-vous de disposer du rôle IAM (Identity and Access Management) de gestionnaire des opérations Certificate Authority Service (roles/privateca.caManager) ou d'administrateur CA Service (roles/privateca.admin). Pour en savoir plus sur les rôles IAM prédéfinis pour CA Service, consultez Contrôle des accès avec IAM.

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

Activer la publication de LRC

Pour révoquer les certificats émis par un pool d'autorités de certification, vous devez activer la publication de LRC sur le pool d'autorités de certification. Vous pouvez activer la publication de LRC lors de la création d'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 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.

Les certificats contiennent une extension de point de distribution de LRC (CDP) qui spécifie où trouver les informations de LRC pour le certificat. Par défaut, lorsque vous activez la publication de LRC, CA Service remplit l'extension CDP pour tous les certificats émis par l'autorité de certification avec l' emplacement de publication Cloud Storage utilisé par l'autorité de certification. Pour définir vos propres liens à afficher dans cette extension de certificat, définissez les UserDefinedAccessUrls. Pour conserver le lien par défaut vers l'emplacement de publication Cloud Storage et ajouter vos propres liens, ajoutez le lien Cloud Storage à la liste des liens que vous spécifiez.

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

Console

  1. Accédez à la page Certificate Authority Service de la Google Cloud console.

    Certificate Authority Service

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

  3. Cliquez sur le pool d'autorités de certification que vous souhaitez modifier ou sur le pool d'autorités 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'à 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 Emplacements.

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

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

Seules les 100 dernières LRC dans l'ordre chronologique sont conservées en tant que CertificateRevocationList, et les LRC plus anciennes sont automatiquement supprimées. La conservation des LRC plus anciennes dans les buckets Cloud Storage gérés par le client est soumise aux règles de gestion des versions et de conservation des objets configurées par les clients.
Notez que les LRC qui ont été supprimées de CA Service sont toujours accessibles à partir des buckets Cloud Storage gérés par le service, sauf si l'autorité de certification est supprimée. Les LRC ne sont jamais supprimées des buckets Cloud Storage gérés par le client, même si l'autorité de certification est supprimée.

Révoquer un certificat

CA Service permet de révoquer des certificats par numéro de série ou nom de ressource, et accepte également un motif facultatif. Une fois qu'un certificat est révoqué, son numéro de série et le motif de révocation apparaissent dans toutes les futures LRC jusqu'à sa date d'expiration. Une LRC 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 de la Google Cloud console.

    Accéder à Certificate Authority Service

  2. Cliquez sur l'onglet Gestionnaire de certificats privé.
  3. Dans la liste des certificats, cliquez sur Afficher plus dans la ligne de le 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 qui a émis le certificat
    • ISSUER_LOCATION : emplacement du pool d'autorités de certification émetteur
    • REVOCATION_REASON : motif de la révocation du certificat

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

    gcloud privateca certificates revoke --help
    

    Pour en savoir plus sur la gcloud privateca certificates revoke commande, consultez gcloud privateca certificates revoke.

  • 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 qui a émis le certificat
    • ISSUER_LOCATION : emplacement du pool d'autorités de certification émetteur
    • REVOCATION_REASON : motif de la révocation du certificat

    Pour en savoir plus sur la gcloud privateca certificates revoke commande, consultez gcloud privateca certificates revoke.

    Lorsque vous êtes invité à confirmer votre choix, 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 de CA Service, configurez le service 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 de CA Service, configurez le service 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 de CA Service, configurez le service 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