Révoquer les certificats

Cette page explique comment révoquer des certificats.

Certificate Authority Service permet de révoquer des certificats en publiant régulièrement Listes de révocation de certificats (LRC). Vous ne pouvez révoquer que les certificats émis par Pools d'autorités de certification de niveau Enterprise.

Avant de commencer

Assurez-vous de disposer du gestionnaire d'opérations de Certificate Authority Service (roles/privateca.caManager) ou l'administrateur du service CA (roles/privateca.admin) le rôle IAM (Identity and Access Management). Pour plus des informations sur les rôles IAM prédéfinis CA Service, 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 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 initialement désactivée, vous pourrez activer la publication de LRC ultérieurement.

Une fois que vous avez activé la publication de LRC, une nouvelle LRC est publiée quotidiennement et est valable 7 jours. Une nouvelle LRC est également publiée dans les 15 minutes nouvelle révocation de certificat.

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

Console

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

    Certificate Authority Service

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

  3. Cliquez sur le pool d'autorités de certification que vous souhaitez modifier ou sur celui 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'à atteindre la section Configurer les options de publication.

  6. Cliquez sur le bouton Publier la liste de révocation de certificats 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 plus d'informations sur la commande gcloud privateca pools update, consultez la page sur gcloud privateca pools update.

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

Révoquer un certificat

Le service CA permet de révoquer des certificats par numéro de série ou par ressource et accepte également un motif facultatif. Lorsqu'un certificat est révoqué, son numéro de série et le motif de révocation apparaissent dans toutes les LRC ultérieures jusqu'à ce que le le certificat atteint sa date d'expiration. Une LRC hors bande est également générée dans dans un délai de 15 minutes.

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

Console

  1. Accédez à la page Certificate Authority Service 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 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 \
      --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.
    • REVOCATION_REASON: motif de révocation du certificat.

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

    gcloud privateca certificates revoke --help
    

    Pour plus d'informations sur la commande gcloud privateca certificates revoke, consultez la section sur la commande gcloud privateca certificate révocation.

  • 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 émis le certificat.
    • REVOCATION_REASON: motif de révocation du certificat.

    Pour plus d'informations sur la commande gcloud privateca certificates revoke, consultez la section sur la commande gcloud privateca certificate révocation.

    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 du service CA, 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 CA, 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 CA, 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