Revoca certificati

Questa pagina spiega come revocare i certificati.

Certificate Authority Service supporta la revoca dei certificati pubblicando periodicamente elenchi di revoche certificati (CRL). Puoi revocare solo i certificati emessi da pool di CA nel livello Enterprise.

Prima di iniziare

Assicurati di disporre del ruolo di Identity and Access Management (IAM) Gestore operazioni servizio CA (roles/privateca.caManager) o Amministratore servizio CA (roles/privateca.admin). Per ulteriori informazioni sui ruoli IAM predefiniti per il servizio CA, consulta Controllo dell'accesso con IAM.

Per informazioni sulla concessione di un ruolo IAM, consulta Concedere un singolo ruolo.

Attivare la pubblicazione dei CRL

Per revocare i certificati emessi da un pool di CA, devi attivare la pubblicazione della CRL sul pool di CA. Puoi attivare la pubblicazione della CRL durante la creazione di un pool di CA. Se inizialmente disattivata, puoi abilitare la pubblicazione CRL in un secondo momento.

Dopo aver attivato la pubblicazione dell'elenco CRL, viene pubblicato un nuovo elenco CRL ogni giorno e rimane valido per 7 giorni. Viene inoltre pubblicato un nuovo CRL entro 15 minuti da ogni nuova revoca del certificato.

Per attivare la pubblicazione dei CRL in un pool di CA:

Console

  1. Vai alla pagina Certificate Authority Service nella console Google Cloud.

    Certificate Authority Service

  2. Fai clic sulla scheda Gestore pool di CA.

  3. Fai clic sul pool di CA che vuoi modificare o sul pool di CA che contiene la CA che vuoi modificare.

  4. Nella pagina Pool di CA, fai clic su Modifica.

  5. Fai clic su Avanti fino a raggiungere la sezione Configura le opzioni di pubblicazione.

  6. Fai clic sul pulsante di attivazione/disattivazione Pubblica CRL nel bucket GCS per le CA in questo pool.

gcloud

Esegui questo comando:

gcloud privateca pools update POOL_ID \
  --publish-crl

Sostituisci POOL_ID con il nome del pool di CA.

Per ulteriori informazioni sul comando gcloud privateca pools update, consulta gcloud privateca pools update.

CA Service applica un limite di 500.000 certificati revocati non scaduti per elenco revoche certificati.

Revocare un certificato

CA Service consente di revocare i certificati in base al numero di serie o al nome della risorsa e accetta anche un motivo facoltativo. Dopo la revoca di un certificato, il relativo numero di serie e il motivo della revoca vengono visualizzati in tutti gli elenchi CRL futuri fino alla data di scadenza del certificato. Viene generata anche una CRL out-of-band entro 15 minuti dalla revoca.

Per revocare un certificato, svolgi i seguenti passaggi:

Console

  1. Vai alla pagina Certificate Authority Service nella console Google Cloud.

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda Gestore certificati privati.
  3. Nell'elenco dei certificati, fai clic su Visualizza altro nella riga del certificato che vuoi eliminare.
  4. Fai clic su Revoca.
  5. Nella finestra di dialogo che si apre, fai clic su Conferma.

gcloud

  • Per revocare un certificato utilizzando il nome della risorsa, esegui il seguente comando:

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

    Sostituisci quanto segue:

    • CERT_ID: l'identificatore univoco del certificato che vuoi revocare.
    • POOL_ID: il nome del pool di CA che ha emesso il certificato.
    • REVOCATION_REASON: il motivo della revoca del certificato.

    Il flag --reason è facoltativo. Per ulteriori informazioni su questo flag, consulta --reason o utilizza il seguente comando gcloud con il flag --help:

    gcloud privateca certificates revoke --help
    

    Per ulteriori informazioni sul comando gcloud privateca certificates revoke, consulta gcloud privateca certificates revoke.

  • Per revocare un certificato utilizzando il relativo numero di serie, esegui il seguente comando:

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

    Sostituisci quanto segue:

    • SERIAL_NUMBER: il numero di serie del certificato.
    • POOL_ID: il nome del pool di CA che ha emesso il certificato.
    • REVOCATION_REASON: il motivo della revoca del certificato.

    Per ulteriori informazioni sul comando gcloud privateca certificates revoke, consulta gcloud privateca certificates revoke.

    Quando ti viene chiesto di confermare, puoi farlo inserendo "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.
    
    

Vai

Per autenticarti al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per autenticarti al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Per autenticarti al servizio CA, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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)

Passaggi successivi