Zertifikate widerrufen

Auf dieser Seite wird beschrieben, wie Sie Zertifikate widerrufen.

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

Hinweise

Sie benötigen die IAM-Rolle „Zertifizierungsstelle – Betriebsmanager“ (roles/privateca.caManager) oder „Zertifizierungsstelle – Administrator“ (roles/privateca.admin). Weitere Informationen zu den vordefinierten IAM-Rollen für den CA-Dienst 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 für den CA-Pool aktivieren. Sie können die CRL-Veröffentlichung beim Erstellen eines CA-Pools 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 für einen CA-Pool:

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 CA-Pool, den Sie bearbeiten möchten, oder auf den CA-Pool, der die CA enthält, die Sie bearbeiten möchten.

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

  5. Klicken Sie auf Weiter, bis Sie den Abschnitt Veröffentlichungsoptionen konfigurieren erreichen.

  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.

Zertifikat widerrufen

Mit CA Service können Zertifikate anhand der Seriennummer oder des Ressourcennamens widerrufen werden. Optional kann auch ein Grund angegeben werden. Nach dem Widerrufen eines Zertifikats kann die Seriennummer Nummer und Widerrufsgrund in allen zukünftigen Zertifikatssperrlisten angezeigt, bis 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 in der Zeile des Zertifikats, das Sie löschen möchten, auf Mehr anzeigen.
  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 anhand 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. Sie können auch den folgenden gcloud-Befehl mit dem Flag --help verwenden:

    gcloud privateca certificates revoke --help
    

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

  • 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 certificates revoke.

    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 zur Authentifizierung beim CA-Dienst die Standardanmeldedaten für Anwendungen ein. 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