Revoca certificati

Questa pagina spiega come revocare i certificati.

Certificate Authority Service supporta la revoca dei certificati pubblicando periodicamente gli 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 gestione delle operazioni di Certificate Authority Service (roles/privateca.caManager) o del ruolo di amministratore di CA Service (roles/privateca.admin) di Identity and Access Management (IAM). Per saperne di più 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.

Abilitare la pubblicazione di CRL

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

Dopo aver abilitato la pubblicazione di CRL, viene pubblicato un nuovo CRL ogni giorno, valido per 7 giorni. Un nuovo CRL viene pubblicato anche entro 15 minuti dalla revoca di un nuovo certificato.

I certificati contengono un'estensione del punto di distribuzione CRL (CDP) che specifica dove è possibile trovare le informazioni CRL per il certificato. Per impostazione predefinita, quando abiliti la pubblicazione di CRL, CA Service popola l'estensione CDP per tutti i certificati emessi dalla CA con la località di pubblicazione di Cloud Storage utilizzata dalla CA. Per impostare i tuoi link da visualizzare in questa estensione del certificato, imposta UserDefinedAccessUrls. Per mantenere il link alla località di pubblicazione di Cloud Storage predefinita e aggiungere anche i tuoi link, aggiungi il link di Cloud Storage all'elenco di link che hai specificato.

Per abilitare la pubblicazione di CRL in un pool di CA:

Console

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

    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 --location LOCATION --publish-crl

Sostituisci quanto segue:

  • POOL_ID: il nome del pool di CA
  • LOCATION: la località del pool di CA. Per l' elenco completo delle località, consulta Località.

Per saperne di più sul comando gcloud privateca pools update, consulta gcloud privateca pools update.

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

Vengono conservati solo gli ultimi 100 CRL in ordine cronologico come CertificateRevocationList e i CRL precedenti vengono eliminati automaticamente. La conservazione dei CRL precedenti nei bucket Cloud Storage gestiti dal cliente è soggetta alle norme di controllo delle versioni degli oggetti e di conservazione configurate dai clienti.
Tieni presente che i CRL eliminati da CA Service sono comunque accessibili dai bucket Cloud Storage gestiti dal servizio, a meno che la CA non venga eliminata.
I CRL non vengono mai eliminati dai bucket Cloud Storage gestiti dal cliente, anche se la CA viene eliminata.

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 i CRL futuri fino alla data di scadenza del certificato. Viene generato anche un CRL fuori banda entro 15 minuti dalla revoca.

Per revocare un certificato:

Console

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

    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 di il 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 relativo nome della risorsa, esegui questo comando:

    gcloud privateca certificates revoke \
        --certificate CERT_ID \
        --issuer-pool POOL_ID \
        --issuer-location ISSUER_LOCATION \
        --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
    • ISSUER_LOCATION: la località del pool di CA di emissione
    • REVOCATION_REASON: il motivo della revoca del certificato

    Il flag --reason è facoltativo. Per saperne di più su questo flag, consulta --reason o utilizza il seguente gcloud comando con il --help flag:

    gcloud privateca certificates revoke --help
    

    Per saperne di più sul gcloud privateca certificates revoke comando, consulta gcloud privateca certificates revoke.

  • 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 \
        --issuer-location ISSUER_LOCATION \
        --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
    • ISSUER_LOCATION: la località del pool di CA di emissione
    • REVOCATION_REASON: il motivo della revoca del certificato

    Per saperne di più sul gcloud privateca certificates revoke comando, 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 eseguire l'autenticazione in CA Service, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 in CA Service, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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 in CA Service, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura 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