Révoquer les certificats

Cette page explique comment révoquer des certificats.

Certificate Authority Service gère la révocation des 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 du niveau Enterprise.

Avant de commencer

Assurez-vous de disposer du rôle Identity and Access Management (IAM) Certificate Authority Service Operation Manager (roles/privateca.caManager) ou du rôle IAM (Identity and Access Management) d'administrateur CA Service (roles/privateca.admin). Pour en savoir plus sur les rôles IAM prédéfinis pour le service de 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 page Attribuer un rôle unique.

Activer la publication de LRC

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

Une fois que vous avez activé la publication de LRC, une nouvelle liste de révocation de certificats est publiée quotidiennement et reste valable sept jours. Une nouvelle LRC est également publiée dans les 15 minutes suivant toute révocation de nouveau certificat.

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 console Google Cloud.

    Certificate Authority Service

  2. Cliquez sur le nom d'une autorité de certification du pool d'autorités de certification que vous souhaitez modifier.

  3. Sur la page Autorité de certification, cliquez sur Modifier la stratégie.

  4. Dans le panneau de gauche qui s'affiche, cliquez sur le bouton Publier l'URL d'accès pour la liste de révocation de certificats dans les certificats émis sous Options de publication.

gcloud

Exécutez la commande ci-dessous.

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 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

CA Service permet de révoquer des certificats par numéro de série ou nom de 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 futures LRC, jusqu'à ce que le certificat atteigne 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 console Google Cloud.

    Accéder à Certificate Authority Service

  2. Cliquez sur l'onglet Gestionnaire de certificats privés.
  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 qui a émis le certificat.
    • REVOCATION_REASON: motif 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 plus d'informations sur la commande gcloud privateca certificates revoke, consultez la page 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 qui a émis le certificat.
    • REVOCATION_REASON: motif de la révocation du certificat.

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

    Lorsque vous êtes invité à confirmer votre choix, 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 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)

Étapes suivantes