Zertifikate widerrufen

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

Certificate Authority Service unterstützt den Widerruf von Zertifikaten durch regelmäßige Veröffentlichung von Zertifikatssperrlisten. Sie können nur Zertifikate widerrufen, die von CA-Pools auf der Enterprise-Stufe ausgestellt wurden.

Hinweise

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

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

CRL-Veröffentlichung aktivieren

Wenn Sie die von einem Zertifizierungsstellenpool ausgestellten Zertifikate widerrufen möchten, müssen Sie die Veröffentlichung von Zertifikatssperrlisten im Zertifizierungsstellenpool aktivieren. Sie können die CRL-Veröffentlichung beim Erstellen eines Zertifizierungsstellenpools aktivieren. Wenn die CRL-Veröffentlichung ursprünglich deaktiviert ist, können Sie sie später aktivieren.

Nachdem Sie die Zertifikatssperrliste aktiviert haben, wird täglich eine neue Zertifikatssperrliste veröffentlicht, die sieben Tage lang gültig ist. Außerdem wird innerhalb von 15 Minuten nach dem Widerruf eines neuen Zertifikats eine neue Zertifikatssperrliste veröffentlicht.

So aktivieren Sie die Veröffentlichung von Zertifikatssperrlisten 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 Namen einer Zertifizierungsstelle aus dem Zertifizierungsstellenpool, den Sie ändern möchten.

  3. Klicken Sie auf der Seite Zertifizierungsstelle auf Richtlinie bearbeiten.

  4. Klicken Sie im angezeigten linken Bereich unter Veröffentlichungsoptionen auf die Ein/Aus-Schaltfläche Zugriffs-URL für die Zertifikatssperrliste in ausgestellten Zertifikaten 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 privatecapools update.

CA Service erzwingt ein Limit von 500.000 nicht abgelaufenen widerrufenen Zertifikaten pro CRL.

Zertifikat widerrufen

CA Service ermöglicht das Widerrufen von Zertifikaten anhand der Seriennummer oder des Ressourcennamens, akzeptiert auch einen optionalen Grund. Nachdem ein Zertifikat widerrufen wurde, werden seine Seriennummer und der Widerrufsgrund in allen zukünftigen Zertifikatssperrlisten angezeigt, bis das Ablaufdatum des Zertifikats erreicht ist. Innerhalb von 15 Minuten nach dem Widerruf wird ebenfalls eine Out-of-Band-CRL generiert.

So widerrufen Sie ein Zertifikat:

Console

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

    Zum Certificate Authority Service

  2. Klicken Sie auf den Tab Privater Zertifikatsmanager.
  3. Klicken Sie in der Liste der Zertifikate in der Zeile des zu löschenden Zertifikats 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 mit seinem Ressourcennamen 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 Zertifizierungsstellenpools, der das Zertifikat ausgestellt hat.
    • REVOCATION_REASON: Der Grund für das Widerrufen des Zertifikats.

    Das Flag --reason ist optional. Weitere Informationen zu diesem Flag finden Sie unter --reason. Alternativ können Sie 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 certificateaufzeichnung.

  • Führen Sie den folgenden Befehl aus, um ein Zertifikat mit 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 Zertifizierungsstellenpools, der das Zertifikat ausgestellt hat.
    • REVOCATION_REASON: Der Grund für das Widerrufen des Zertifikats.

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

    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.
    
    

Einfach loslegen (Go)

Richten Sie für die Authentifizierung beim CA Service Standardanmeldedaten für Anwendungen ein. 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 für die Authentifizierung beim CA Service 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 für die Authentifizierung beim CA Service Standardanmeldedaten für Anwendungen ein. 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