Revoca certificati

In questa pagina viene spiegato come revocare i certificati.

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

Prima di iniziare

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

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

Abilita pubblicazione CRL

Per revocare i certificati emessi da un pool di CA, devi abilitare la pubblicazione dei CRL nel pool di CA. Puoi abilitare la pubblicazione dei CRL durante la creazione di un pool di CA. Se inizialmente è disabilitata, puoi abilitare la pubblicazione dei CRL in un secondo momento.

Dopo aver abilitato la pubblicazione dei CRL, viene pubblicato un nuovo CRL ogni giorno ed è valido per 7 giorni. Inoltre, viene pubblicato un nuovo CRL entro 15 minuti dalla revoca del nuovo certificato.

Per abilitare 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 sul nome di una CA del pool di CA che vuoi modificare.

  3. Nella pagina Autorità di certificazione, fai clic su Modifica criterio.

  4. Nel riquadro visualizzato a sinistra, fai clic sull'opzione di attivazione/disattivazione Pubblica l'URL di accesso per l'elenco di revoche dei certificati nei certificati emessi in Opzioni di pubblicazione.

gcloud

Esegui questo comando:

gcloud privateca pools update POOL_ID \
  --publish-crl

Sostituisci POOL_ID con il nome del pool di CA.

Per maggiori informazioni sul comando gcloud privateca pools update, vedi gcloud privateca pool update.

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

Revocare un certificato

CA Service consente la revoca dei 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 i CRL futuri fino a quando il certificato non raggiunge la data di scadenza. Entro 15 minuti dalla revoca viene generato anche un CRL fuori banda.

Per revocare un certificato, segui questi 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 privato.
  3. Nell'elenco dei certificati, fai clic su Mostra 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 questo 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 certificate remove.

  • Per revocare un certificato utilizzando il relativo numero di serie, esegui questo 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 certificate remove.

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

Per eseguire l'autenticazione a CA Service, configura Credenziali predefinite dell'applicazione. Per maggiori 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 eseguire l'autenticazione a CA Service, configura Credenziali predefinite dell'applicazione. Per maggiori 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 eseguire l'autenticazione a CA Service, configura Credenziali predefinite dell'applicazione. Per maggiori 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