Zertifizierungsstellen löschen

Mit dem Certificate Authority Service können Sie eine vorhandene Zertifizierungsstelle löschen. Die CA wird nach einem 30-tägigen Kulanzzeitraum ab dem Beginn des Löschvorgangs endgültig gelöscht. Nach Ablauf der Kulanzzeitraums löscht der CA-Dienst die Zertifizierungsstelle und alle verschachtelten Artefakte wie Zertifikate und Zertifikatssperrlisten (Certificate Revocation Lists, CRLs) endgültig.

Alle vom Kunden verwalteten Google Cloud-Ressourcen, die von der gelöschten Zertifizierungsstelle verwendet wurden, z. B. Cloud Storage-Buckets oder Cloud Key Management Service-Schlüssel, werden nicht gelöscht. Weitere Informationen zu von Google verwalteten und vom Kunden verwalteten Ressourcen finden Sie unter Ressourcen verwalten.

Für eine gelöschte CA werden während des Kulanzzeitraums keine Kosten in Rechnung gestellt. Wenn Sie die DELETED jedoch wiederherstellen, werden Ihnen die Kosten für die Zeit in Rechnung gestellt, in der sich die DELETED im Status DELETED befand.

Hinweise

  • Sie benötigen die IAM-Rolle „CA Service Operation Manager“ (roles/privateca.caManager) oder „CA Service Admin“ (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 Einzelne Rolle zuweisen.

  • Die Zertifizierungsstelle muss die folgenden Bedingungen erfüllen:

    • Die Zertifizierungsstelle darf keine aktiven Zertifikate enthalten. Ein Zertifikat gilt als aktiv, wenn es die folgenden Bedingungen erfüllt:

      • Das Zertifikat hat ein gültiges Start- und Enddatum.
      • Das Zertifikat wurde nicht widerrufen.
      • Das Gerät oder System, das das Zertifikat verwendet, vertraut der Zertifizierungsstelle, die das Zertifikat ausgestellt hat.

    Bevor Sie die Zertifizierungsstelle löschen, müssen Sie alle aktiven Zertifikate widerrufen, die von der Zertifizierungsstelle ausgestellt wurden. Zertifikate einer gelöschten Zertifizierungsstelle können nicht widerrufen werden.

Zertifizierungsstelle löschen

So löschen Sie eine Zertifizierungsstelle:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Zertifizierungsstellen auf.

    Zertifizierungsstellen aufrufen

  2. Wählen Sie in der Liste der Zertifizierungsstellen die Zertifizierungsstelle aus, die Sie löschen möchten.
  3. Klicken Sie auf Löschen. Das Dialogfeld Zertifizierungsstelle löschen wird angezeigt.
  4. Optional: Setzen Sie ein Häkchen in eines oder beide der folgenden Kästchen, wenn die Bedingungen auf Sie zutreffen:
    • Diese Zertifizierungsstelle löschen, auch wenn aktive Zertifikate vorhanden sind

      Mit dieser Option können Sie eine Zertifizierungsstelle mit aktiven Zertifikaten löschen. Wenn Sie eine Zertifizierungsstelle mit aktiven Zertifikaten löschen, kann dies dazu führen, dass Websites, Anwendungen oder Systeme, die auf diese Zertifikate angewiesen sind, nicht mehr funktionieren. Wir empfehlen, alle aktiven Zertifikate aufzuheben, die von einer Zertifizierungsstelle ausgestellt wurden, bevor Sie die Zertifizierungsstelle löschen.

    • Kulanzzeitraum von 30 Tagen überspringen und CA sofort löschen

      Während des Kulanzzeitraums von 30 Tagen haben Sie Zeit, alle von dieser Zertifizierungsstelle ausgestellten Zertifikate zu widerrufen und zu prüfen, ob keine Systeme von dieser Zertifizierungsstelle abhängen. Wir empfehlen, diese Option nur in nicht produktiven oder Testumgebungen zu verwenden, um potenzielle Ausfälle und Datenverluste zu vermeiden.

  5. Klicken Sie auf Bestätigen.

gcloud

  1. Prüfen Sie, ob der Status der Zertifizierungsstelle deaktiviert ist. Sie können nur Zertifizierungsstellen löschen, die sich im Status DISABLED befinden.

    gcloud privateca roots describe CA_ID --pool=POOL_ID \
      --format="value(state)"
    

    Ersetzen Sie Folgendes:

    • CA_ID: Die eindeutige Kennung der Zertifizierungsstelle.
    • POOL_ID: Der Name des CA-Pools, der die Zertifizierungsstelle enthält.

    Weitere Informationen zum Befehl gcloud privateca roots describe finden Sie unter gcloud privateca roots describe.

  2. Wenn die Zertifizierungsstelle nicht deaktiviert ist, führen Sie den folgenden Befehl aus, um sie zu deaktivieren.

    gcloud privateca roots disable CA_ID --pool=POOL_ID
    

    Weitere Informationen zum Befehl gcloud privateca roots disable finden Sie unter gcloud privateca roots disable.

  3. Löschen Sie die Zertifizierungsstelle.

    gcloud privateca roots delete CA_ID --pool=POOL_ID
    

    Sie können die Zertifizierungsstelle auch dann löschen, wenn sie aktive Zertifikate hat, indem Sie das Flag --ignore-active-certificates in den Befehl gcloud einfügen.

    Weitere Informationen zum Befehl gcloud privateca roots delete finden Sie unter gcloud privateca roots delete.

  4. Bestätigen Sie auf Nachfrage, dass Sie die Zertifizierungsstelle löschen möchten.

    Nach der Bestätigung wird die CA zum Löschen geplant und der 30-tägige Kulanzzeitraum beginnt. Der Befehl gibt das voraussichtliche Datum und die voraussichtliche Uhrzeit aus, zu der die Zertifizierungsstelle gelöscht wird.

    Deleted Root CA [projects/PROJECT_ID/locations/us-west1/caPools/POOL_ID/certificateAuthorities/CA_ID] can be undeleted until 2020-08-14T19:28:39Z.
    

Go

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 (
	"context"
	"fmt"
	"io"

	privateca "cloud.google.com/go/security/privateca/apiv1"
	"cloud.google.com/go/security/privateca/apiv1/privatecapb"
)

// Delete a Certificate Authority from the specified CA pool.
// Before deletion, the CA must be disabled or staged and must not contain any active certificates.
func deleteCa(w io.Writer, projectId string, location string, caPoolId string, caId 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 id of the CA pool under which the CA is present.
	// caId := "ca-id"				// The id of the CA to be deleted.

	ctx := context.Background()
	caClient, err := privateca.NewCertificateAuthorityClient(ctx)
	if err != nil {
		return fmt.Errorf("NewCertificateAuthorityClient creation failed: %w", err)
	}
	defer caClient.Close()

	fullCaName := fmt.Sprintf("projects/%s/locations/%s/caPools/%s/certificateAuthorities/%s",
		projectId, location, caPoolId, caId)

	// Check if the CA is disabled or staged.
	// See https://pkg.go.dev/cloud.google.com/go/security/privateca/apiv1/privatecapb#GetCertificateAuthorityRequest.
	caReq := &privatecapb.GetCertificateAuthorityRequest{Name: fullCaName}
	caResp, err := caClient.GetCertificateAuthority(ctx, caReq)
	if err != nil {
		return fmt.Errorf("GetCertificateAuthority failed: %w", err)
	}

	if caResp.State != privatecapb.CertificateAuthority_DISABLED &&
		caResp.State != privatecapb.CertificateAuthority_STAGED {
		return fmt.Errorf("you can only delete disabled or staged Certificate Authorities. %s is not disabled", caId)
	}

	// Create the DeleteCertificateAuthorityRequest.
	// Setting the IgnoreActiveCertificates to True will delete the CA
	// even if it contains active certificates. Care should be taken to re-anchor
	// the certificates to new CA before deleting.
	// See https://pkg.go.dev/cloud.google.com/go/security/privateca/apiv1/privatecapb#DeleteCertificateAuthorityRequest.
	req := &privatecapb.DeleteCertificateAuthorityRequest{
		Name:                     fullCaName,
		IgnoreActiveCertificates: false,
	}

	op, err := caClient.DeleteCertificateAuthority(ctx, req)
	if err != nil {
		return fmt.Errorf("DeleteCertificateAuthority failed: %w", err)
	}

	if caResp, err = op.Wait(ctx); err != nil {
		return fmt.Errorf("DeleteCertificateAuthority failed during wait: %w", err)
	}

	if caResp.State != privatecapb.CertificateAuthority_DELETED {
		return fmt.Errorf("unable to delete Certificate Authority. Current state: %s", caResp.State.String())
	}

	fmt.Fprintf(w, "Successfully deleted Certificate Authority: %s.", caId)
	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.CertificateAuthority.State;
import com.google.cloud.security.privateca.v1.CertificateAuthorityName;
import com.google.cloud.security.privateca.v1.CertificateAuthorityServiceClient;
import com.google.cloud.security.privateca.v1.DeleteCertificateAuthorityRequest;
import com.google.longrunning.Operation;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class DeleteCertificateAuthority {

  public static void main(String[] args)
      throws InterruptedException, ExecutionException, IOException {
    // 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: The id of the CA pool under which the CA is present.
    // certificateAuthorityName: The name of the CA to be deleted.
    String project = "your-project-id";
    String location = "ca-location";
    String poolId = "ca-pool-id";
    String certificateAuthorityName = "certificate-authority-name";
    deleteCertificateAuthority(project, location, poolId, certificateAuthorityName);
  }

  // Delete the Certificate Authority from the specified CA pool.
  // Before deletion, the CA must be disabled and must not contain any active certificates.
  public static void deleteCertificateAuthority(
      String project, String location, String poolId, String certificateAuthorityName)
      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 the Certificate Authority Name.
      CertificateAuthorityName certificateAuthorityNameParent =
          CertificateAuthorityName.newBuilder()
              .setProject(project)
              .setLocation(location)
              .setCaPool(poolId)
              .setCertificateAuthority(certificateAuthorityName)
              .build();

      // Check if the CA is enabled.
      State caState =
          certificateAuthorityServiceClient
              .getCertificateAuthority(certificateAuthorityNameParent)
              .getState();
      if (caState == State.ENABLED) {
        System.out.println(
            "Please disable the Certificate Authority before deletion ! Current state: " + caState);
        return;
      }

      // Create the DeleteCertificateAuthorityRequest.
      // Setting the setIgnoreActiveCertificates() to true, will delete the CA
      // even if it contains active certificates. Care should be taken to re-anchor
      // the certificates to new CA before deleting.
      DeleteCertificateAuthorityRequest deleteCertificateAuthorityRequest =
          DeleteCertificateAuthorityRequest.newBuilder()
              .setName(certificateAuthorityNameParent.toString())
              .setIgnoreActiveCertificates(false)
              .build();

      // Delete the Certificate Authority.
      ApiFuture<Operation> futureCall =
          certificateAuthorityServiceClient
              .deleteCertificateAuthorityCallable()
              .futureCall(deleteCertificateAuthorityRequest);
      Operation response = futureCall.get();

      if (response.hasError()) {
        System.out.println("Error while deleting Certificate Authority !" + response.getError());
        return;
      }

      // Check if the CA has been deleted.
      caState =
          certificateAuthorityServiceClient
              .getCertificateAuthority(certificateAuthorityNameParent)
              .getState();
      if (caState == State.DELETED) {
        System.out.println(
            "Successfully deleted Certificate Authority : " + certificateAuthorityName);
      } else {
        System.out.println(
            "Unable to delete Certificate Authority. Please try again ! Current state: " + caState);
      }
    }
  }
}

Python

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 google.cloud.security.privateca_v1 as privateca_v1


def delete_certificate_authority(
    project_id: str, location: str, ca_pool_name: str, ca_name: str
) -> None:
    """
    Delete the Certificate Authority from the specified CA pool.
    Before deletion, the CA must be disabled and must not contain any active certificates.

    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: the name of the CA pool under which the CA is present.
        ca_name: the name of the CA to be deleted.
    """

    caServiceClient = privateca_v1.CertificateAuthorityServiceClient()
    ca_path = caServiceClient.certificate_authority_path(
        project_id, location, ca_pool_name, ca_name
    )

    # Check if the CA is enabled.
    ca_state = caServiceClient.get_certificate_authority(name=ca_path).state
    if ca_state != privateca_v1.CertificateAuthority.State.DISABLED:
        print(
            "Please disable the Certificate Authority before deletion ! Current state:",
            ca_state,
        )
        raise RuntimeError(
            f"You can only delete disabled Certificate Authorities. "
            f"{ca_name} is not disabled!"
        )

    # Create the DeleteCertificateAuthorityRequest.
    # Setting the ignore_active_certificates to True will delete the CA
    # even if it contains active certificates. Care should be taken to re-anchor
    # the certificates to new CA before deleting.
    request = privateca_v1.DeleteCertificateAuthorityRequest(
        name=ca_path, ignore_active_certificates=False
    )

    # Delete the Certificate Authority.
    operation = caServiceClient.delete_certificate_authority(request=request)
    result = operation.result()

    print("Operation result", result)

    # Get the current CA state.
    ca_state = caServiceClient.get_certificate_authority(name=ca_path).state

    # Check if the CA has been deleted.
    if ca_state == privateca_v1.CertificateAuthority.State.DELETED:
        print("Successfully deleted Certificate Authority:", ca_name)
    else:
        print(
            "Unable to delete Certificate Authority. Please try again ! Current state:",
            ca_state,
        )

Ablaufdatum einer gelöschten Zertifizierungsstelle prüfen

So sehen Sie, wann eine Zertifizierungsstelle endgültig gelöscht wird:

Console

  1. Klicken Sie auf den Tab CA-Poolmanager.
  2. Klicken Sie auf den Namen des CA-Pools, der die gelöschte Zertifizierungsstelle enthielt.

Das Ablaufdatum der Zertifizierungsstelle finden Sie in der Tabelle auf der Seite CA-Pool.

Ablaufdatum einer gelöschten Zertifizierungsstelle ansehen

gcloud

Führen Sie den folgenden Befehl aus, um die voraussichtliche Löschzeit für eine Zertifizierungsstelle zu prüfen:

gcloud privateca roots describe CA_ID \
  --pool=POOL_ID \
  --format="value(expireTime.date())"

Ersetzen Sie Folgendes:

  • CA_ID: Der Name der Zertifizierungsstelle.
  • POOL_ID: Der Name des CA-Pools, der die Zertifizierungsstelle enthielt.

Der Befehl gibt das voraussichtliche Datum und die voraussichtliche Uhrzeit zurück, zu der der CA-Dienst die Zertifizierungsstelle löscht.

2020-08-14T19:28:39

Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Zertifizierungsstelle endgültig gelöscht wurde:

gcloud privateca roots describe CA_ID --pool=POOL_ID

Wenn die Zertifizierungsstelle erfolgreich gelöscht wurde, gibt der Befehl den folgenden Fehler zurück.

ERROR: (gcloud.privateca.roots.describe) NOT_FOUND: Resource 'projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID' was not found

Nächste Schritte