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 Pool di CA nel livello Enterprise.

Prima di iniziare

Assicurati di avere il gestore delle operazioni di Certificate Authority Service (roles/privateca.caManager) o l'amministratore del servizio CA (roles/privateca.admin) Ruolo Identity and Access Management (IAM). Per maggiori informazioni informazioni sui ruoli IAM predefiniti Per il servizio CA, vedi 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 sul pool di CA. Puoi abilitare la pubblicazione di CRL durante la creazione di un pool di CA. Se inizialmente disabilitata, puoi abilitare la pubblicazione dei CRL in un secondo momento.

Dopo aver attivato la pubblicazione dei CRL, ogni giorno viene pubblicato un nuovo CRL e una validità di 7 giorni. Viene inoltre pubblicato un nuovo CRL entro 15 minuti da qualsiasi la revoca di un nuovo certificato.

Per abilitare la pubblicazione di CRL in un pool di CA, segui questi passaggi:

Console

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

    Certificate Authority Service

  2. Fai clic sulla scheda Gestore del pool di CA.

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

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

  5. Fai clic su Avanti fino ad arrivare alla 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 maggiori informazioni sul comando gcloud privateca pools update, consulta gcloud privateca pool update.

CA Service applica un limite di 500.000 risposte non scadute revocate certificati per CRL.

Revocare un certificato

CA Service consente di revocare i certificati per numero di serie o risorsa e accetta anche un motivo facoltativo. Se un certificato viene revocato, il numero il numero e il motivo della revoca siano riportati in tutti i futuri CRL fino al raggiunge la data di scadenza. Viene generato anche un CRL fuori banda 15 minuti dalla revoca.

Per revocare un certificato, segui questi passaggi:

Console

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

    Vai a Certificate Authority Service

  2. Fai clic sulla scheda Private Certificate Manager.
  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 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 la pagina relativa alla reazione di certificati gcloud privatecacertified.

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

    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 la pagina relativa alla reazione di certificati gcloud privatecacertified.

    Quando ti viene chiesta conferma, digita "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 con CA Service, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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 con CA Service, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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 con CA Service, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi 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