Zertifikate widerrufen

Auf dieser Seite wird erläutert, wie Sie Zertifikate widerrufen.

Certificate Authority Service unterstützt den Zertifikatswiderruf durch regelmäßige Veröffentlichung Zertifikatssperrlisten (Certificate Revocation Lists, CRLs). Sie können nur Zertifikate widerrufen, die von CA-Pools in der Enterprise-Stufe.

Hinweise

Sie benötigen den Certificate Authority Service Operation Manager (roles/privateca.caManager) oder den CA Service-Administrator (roles/privateca.admin) IAM-Rolle (Identity and Access Management). Weitere Informationen Informationen zu den vordefinierten IAM-Rollen für Weitere Informationen zu CA Service finden Sie unter Zugriffssteuerung mit IAM.

Informationen zum Zuweisen einer IAM-Rolle finden Sie unter Einzelnen Nutzer zuweisen Rolle.

CRL-Veröffentlichung aktivieren

Wenn Sie die von einem CA-Pool ausgestellten Zertifikate widerrufen möchten, müssen Sie die CRL-Veröffentlichung aktivieren für den Zertifizierungsstellenpool. Sie können die CRL-Veröffentlichung beim Erstellen eines Zertifizierungsstellenpools aktivieren. Wenn deaktiviert ist, können Sie die CRL-Veröffentlichung später aktivieren.

Nachdem Sie die Veröffentlichung der Zertifikatssperrliste aktiviert haben, wird täglich eine neue 7 Tage lang gültig. Eine neue Zertifikatssperrliste wird ebenfalls innerhalb von 15 Minuten Widerrufs neuer Zertifikate.

So aktivieren Sie die CRL-Veröffentlichung in einem Zertifizierungsstellenpool:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Certificate Authority Service auf.

    Certificate Authority Service

  2. Klicken Sie auf den Tab CA-Poolmanager.

  3. Klicken Sie auf den Zertifizierungsstellenpool, den Sie bearbeiten möchten, oder klicken Sie auf den Zertifizierungsstellenpool mit der Zertifizierungsstelle die Sie bearbeiten möchten.

  4. Klicken Sie auf der Seite CA-Pool auf Bearbeiten.

  5. Klicken Sie auf Weiter, bis Sie zum Abschnitt Veröffentlichungsoptionen konfigurieren gelangen.

  6. Klicken Sie auf die Ein/Aus-Schaltfläche CRL in GCS-Bucket für Zertifizierungsstellen in diesem Pool veröffentlichen.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud privateca pools update POOL_ID \
  --publish-crl

Ersetzen Sie POOL_ID durch den Namen des Zertifizierungsstellenpools.

Weitere Informationen zum Befehl gcloud privateca pools update finden Sie unter gcloud privateca cards update.

CA Service erzwingt ein Limit von 500.000 unabgelaufenen,aufgehoben Zertifikate pro Zertifikatssperrliste.

Zertifikate widerrufen

CA Service ermöglicht das Widerrufen von Zertifikaten nach Seriennummer oder Ressource Name und akzeptiert auch einen optionalen Grund. Nach dem Widerrufen eines Zertifikats kann die Seriennummer Nummer und Widerrufsgrund erscheinen in allen zukünftigen Zertifikatssperrlisten, bis die Zertifikat abläuft. Eine Out-of-Band-CRL wird ebenfalls in 15 Minuten nach dem Widerruf.

So widerrufen Sie ein Zertifikat:

Console

  1. Rufen Sie die Seite Certificate Authority Service (Zertifizierungsstelle) im Google Cloud Console

    Zum Certificate Authority Service

  2. Klicken Sie auf den Tab Private Certificate Manager.
  3. Klicken Sie in der Liste der Zertifikate auf Weitere das Zertifikat, das Sie löschen möchten.
  4. Klicken Sie auf Aufheben.
  5. Klicken Sie im Dialogfeld, das geöffnet wird, auf Bestätigen.

gcloud

  • Führen Sie den folgenden Befehl aus, um ein Zertifikat mithilfe seines Ressourcennamens zu widerrufen:

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

    Ersetzen Sie Folgendes:

    • CERT_ID: Die eindeutige Kennung des Zertifikats, das Sie widerrufen möchten.
    • POOL_ID: Der Name des CA-Pools, der das Zertifikat ausgestellt hat.
    • REVOCATION_REASON: Der Grund für den Widerruf des Zertifikats.

    Das Flag --reason ist optional. Weitere Informationen zu diesem Flag finden Sie unter --reason. Verwenden Sie alternativ den folgenden gcloud-Befehl mit dem Flag --help:

    gcloud privateca certificates revoke --help
    

    Weitere Informationen zum Befehl gcloud privateca certificates revoke finden Sie unter gcloud privateca certificate remove.

  • Führen Sie den folgenden Befehl aus, um ein Zertifikat mithilfe seiner Seriennummer zu widerrufen:

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

    Ersetzen Sie Folgendes:

    • SERIAL_NUMBER: Die Seriennummer des Zertifikats.
    • POOL_ID: Der Name des CA-Pools, der das Zertifikat ausgestellt hat.
    • REVOCATION_REASON: Der Grund für den Widerruf des Zertifikats.

    Weitere Informationen zum Befehl gcloud privateca certificates revoke finden Sie unter gcloud privateca certificate choose.

    Wenn Sie zur Bestätigung aufgefordert werden, geben Sie „Y“ ein:

    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

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei CA Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei CA Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei CA Service zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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)

Nächste Schritte