Untergeordnete Zertifizierungsstelle aus einer externen Zertifizierungsstelle erstellen

Auf dieser Seite wird beschrieben, wie Sie eine untergeordnete Zertifizierungsstelle erstellen, die mit einer externen Stamm-Zertifizierungsstelle verkettet ist.

Wenn Sie eine vorhandene PKI-Hierarchie (Public-Key-Infrastruktur) mit einer Stamm-CA und untergeordneten CAs haben, können Sie dieselbe Stamm-CA beibehalten und eine untergeordnete CA in CA Service erstellen, die mit Ihrer externen Stamm-CA verknüpft ist. Der Schlüssel und die Vorgänge der externen Stamm-CA bleiben außerhalb von Google Cloud. Sie können die externe Stammzertifizierungsstelle nur verwenden, um das Zertifikat der untergeordneten Zertifizierungsstelle für Google Cloud auszustellen. Die untergeordnete Zertifizierungsstelle wird sofort von allen Arbeitslasten als vertrauenswürdig eingestuft, die der externen Stammzertifizierungsstelle vertrauen. Sie können dann mit der untergeordneten Zertifizierungsstelle Zertifikate ausstellen, ohne bei der Laufzeit auf die externe Stamm-CA zurückgreifen zu müssen.

Hinweise

  • Sie benötigen die IAM-Rolle „Operation Manager für CA Service“ (roles/privateca.caManager) oder „CA Service Admin“ (roles/privateca.admin). Weitere Informationen finden Sie unter IAM-Richtlinien konfigurieren.
  • Externe Stammzertifizierungsstelle angeben
  • Legen Sie den Namen, das Subjekt, den Gültigkeitszeitraum und die Schlüsselgröße für die untergeordnete Zertifizierungsstelle fest. Weitere Informationen finden Sie unter CA-Einstellungen festlegen.

Untergeordnete Zertifizierungsstelle aus einer externen Zertifizierungsstelle erstellen

So erstellen Sie eine untergeordnete Zertifizierungsstelle aus einer externen Zertifizierungsstelle:

  1. CSR (Certificate Signing Request) für die untergeordnete Zertifizierungsstelle generieren: Als Erstes müssen Sie eine CSR für die untergeordnete Zertifizierungsstelle generieren und dann herunterladen.

  2. Zertifikat der untergeordneten Zertifizierungsstelle von der externen Stamm-CA signieren lassen: Im zweiten Schritt reichen Sie das CSR zur Signatur bei der externen Stamm-CA ein. Folgen Sie der spezifischen Anleitung der externen Stamm-CA zum Einreichen von CSRs und zum Abrufen signierter Zertifikate.

  3. Untergeordnetes CA-Zertifikat in den CA-Dienst importieren: Im letzten Schritt laden Sie die signierte PEM-Zertifikatskette entweder über die Google Cloud CLI oder die Google Cloud Console hoch.

Im folgenden Abschnitt wird beschrieben, wie Sie eine untergeordnete Zertifizierungsstelle aus einer externen Stamm-CA erstellen.

CSR erstellen

Console

  1. Rufen Sie in der Google Cloud Console das Menü Sicherheit > Zertifizierungsstelle auf.

    Zum Certificate Authority Service

  2. Klicken Sie auf den Tab CA Manager.

  3. Klicken Sie auf CA erstellen.

CA-Typ auswählen:

  1. Klicken Sie auf Untergeordnete Zertifizierungsstelle.
  2. Geben Sie im Feld Gültig bis die Dauer ein, für die die vom CA-Zertifikat ausgestellten Zertifikate gültig sein sollen.
  3. Klicken Sie auf Root-Zertifizierungsstelle ist extern.
  4. Wählen Sie eine der verfügbaren Optionen für die CA-Stufe aus. Weitere Informationen finden Sie unter Betriebsstufen auswählen.
  5. Wählen Sie unter Regionalisierung einen CA-Standort aus der Liste aus.
  6. Klicken Sie auf Weiter.
Name des CA-Antragstellers konfigurieren
  1. Geben Sie im Feld Organisation (O) den Namen Ihres Unternehmens ein.
  2. Optional: Geben Sie im Feld Organisationseinheit (OE) die Abteilung oder Geschäftseinheit des Unternehmens ein.
  3. Optional: Geben Sie im Feld Ländername einen zweistelligen Ländercode ein.
  4. Optional: Geben Sie im Feld Name des Bundeslandes den Namen Ihres Bundeslandes ein.
  5. Optional: Geben Sie im Feld Ortsname den Namen Ihrer Stadt ein.
  6. Geben Sie im Feld Allgemeiner CA-Name (CN) den Namen der Zertifizierungsstelle ein.
  7. Geben Sie im Feld Pool-ID den Namen des CA-Pools ein. Der CA-Pool kann nach dem Erstellen der Zertifizierungsstelle nicht mehr geändert werden.
  8. Klicken Sie auf Weiter.
Größe und Algorithmus von CA-Schlüsseln konfigurieren
  1. Wählen Sie den Algorithmus aus, der Ihren Anforderungen am besten entspricht. Informationen zur Auswahl des geeigneten Schlüsselalgorithmus finden Sie unter Schlüsselalgorithmus auswählen.
  2. Klicken Sie auf Weiter.
CA-Artefakte konfigurieren

Die folgenden Schritte sind optional. Wenn Sie diese Schritte überspringen, werden die Standardeinstellungen angewendet.

  1. Wählen Sie aus, ob Sie einen von Google verwalteten oder einen selbst verwalteten Cloud Storage-Bucket verwenden möchten.
  2. Wenn Sie keinen selbst verwalteten Cloud Storage-Bucket auswählen, erstellt der CA Service einen von Google verwalteten Bucket am selben Speicherort wie die Zertifizierungsstelle.

  3. Wählen Sie aus, ob die Veröffentlichung von Zertifikatssperrlisten (Certificate Revocation Lists, CRLs) und CA-Zertifikaten im Cloud Storage-Bucket deaktiviert werden soll.
  4. Die Veröffentlichung von CRL und CA-Zertifikat in einem Cloud Storage-Bucket ist standardmäßig aktiviert. Wenn Sie diese Einstellungen deaktivieren möchten, klicken Sie auf die Ein-/Aus-Schaltflächen.

  5. Klicken Sie auf Weiter.
Labels hinzufügen

Die folgenden Schritte sind optional.

So fügen Sie der CA Labels hinzu:

  1. Klicken Sie auf Element hinzufügen.
  2. Geben Sie im Feld Schlüssel 1 den Labelschlüssel ein.
  3. Geben Sie im Feld Wert 1 den Labelwert ein.
  4. Wenn Sie ein weiteres Label hinzufügen möchten, klicken Sie auf Element hinzufügen. Fügen Sie dann den Labelschlüssel und den Labelwert hinzu, wie in Schritt 2 und 3 beschrieben.
  5. Klicken Sie auf Weiter.
Einstellungen überprüfen

Prüfen Sie alle Einstellungen sorgfältig und klicken Sie dann auf Erstellen, um die Zertifizierungsstelle zu erstellen.

CSR herunterladen

  1. Wählen Sie auf der Seite Zertifizierungsstelle die Zertifizierungsstelle aus, die Sie aktivieren möchten.
  2. Klicken Sie auf Aktivieren.
  3. Klicken Sie im Dialogfeld, das geöffnet wird, auf CSR herunterladen.

    Laden Sie die CSR der Zertifizierungsstelle herunter.

gcloud

  1. Führen Sie den folgenden Befehl aus, um einen CA-Pool für die untergeordnete Zertifizierungsstelle zu erstellen. Weitere Informationen finden Sie unter CA-Pool erstellen.

    gcloud privateca pools create SUBORDINATE_POOL_ID
    

    Ersetzen Sie SUBORDINATE_POOL_ID durch den Namen des Zertifizierungsstellenpools.

  2. Führen Sie den folgenden gcloud-Befehl aus, um eine untergeordnete Zertifizierungsstelle im erstellten CA-Pool zu erstellen. Mit dem Befehl gcloud wird auch ein CSR erstellt und in der Datei FILE_NAME gespeichert.

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
      --pool=SUBORDINATE_POOL_ID \
      --create-csr --csr-output-file=FILE_NAME \
      --key-algorithm="ec-p256-sha256" \
      --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Ersetzen Sie Folgendes:

    • SUBORDINATE_CA_ID: Die eindeutige Kennung der untergeordneten Zertifizierungsstelle.
    • SUBORDINATE_POOL_ID: Der Name des CA-Pools.
    • FILE_NAME: Der Name der Datei, in die die PEM-codierte CSR geschrieben wird.

    Mit dem Flag --key-algorithm wird der kryptografische Algorithmus angegeben, den Sie zum Erstellen eines verwalteten Cloud HSM-Schlüssels für die Zertifizierungsstelle verwenden möchten.

    Für das Flag --subject wird der X.501-Name des Zertifikatsinhabers verwendet.

    Weitere Informationen zum Befehl gcloud privateca subordinates create finden Sie unter gcloud privateca subordinates create.

Beim Erstellen des CSR wird die folgende Meldung zurückgegeben:

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.

Führen Sie den folgenden Befehl aus, um eine vollständige Liste der verfügbaren Einstellungen aufzurufen:

gcloud privateca subordinates create --help

Wenn Sie das CSR verlieren, können Sie es mit dem folgenden Befehl noch einmal herunterladen:

gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID

Terraform

  1. Verwenden Sie die folgende Konfigurationsdatei, um einen CA-Pool und eine untergeordnete CA in diesem CA-Pool zu erstellen:

    resource "google_privateca_ca_pool" "default" {
      name     = "test-ca-pool"
      location = "us-central1"
      tier     = "ENTERPRISE"
    }
    
    resource "google_privateca_certificate_authority" "sub-ca" {
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = "my-certificate-authority-sub"
      location = "us-central1"
      config {
        subject_config {
          subject {
            organization = "HashiCorp"
            common_name = "my-subordinate-authority"
          }
          subject_alt_name {
            dns_names = ["hashicorp.com"]
          }
        }
        x509_config {
          ca_options {
            is_ca = true
            # Force the sub CA to only issue leaf certs
            max_issuer_path_length = 0
          }
          key_usage {
            base_key_usage {
              cert_sign = true
              crl_sign = true
            }
            extended_key_usage {
            }
          }
        }
      }
      lifetime = "86400s"
      key_spec {
        algorithm = "RSA_PKCS1_4096_SHA256"
      }
      type = "SUBORDINATE"
    }
    
  2. Fügen Sie die folgende Konfiguration an, um die CSR abzurufen.

    data "google_privateca_certificate_authority" "sub-ca-csr" {
      location = "us-central1"
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id
    }
    
    output "csr" {
      value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr
    }
    
  3. Führen Sie terraform apply aus.

CSR signieren

Übergeben Sie die generierte CSR-Datei an das Mitglied Ihrer Organisation, das für die Zertifikatsausstellung verantwortlich ist, und bitten Sie es, sie zu unterzeichnen. Die konkreten Schritte hängen von der Konfiguration Ihrer Organisation ab.

Mit den folgenden openssl-Befehlen können Sie eine einfache Stamm-CA testen:

Shell

Konfigurieren Sie die Einstellungen für die neue Stamm-CA.

cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions    = v3_ca
prompt             = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM

Erstellen Sie die neue Stamm-CA.

openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
  -days 3000 -out rootCA.crt -batch

Konfigurieren Sie die Erweiterungen, die dem neuen untergeordneten CA-Zertifikat hinzugefügt werden müssen.

cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM

Signieren Sie das CSR der untergeordneten Zertifizierungsstelle mit dieser Stammzertifizierungsstelle.

openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf

Verketten Sie die gesamte Zertifikatskette zu einer einzelnen Datei.

cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt

Signiertes Zertifikat hochladen

So aktivieren Sie eine untergeordnete Zertifizierungsstelle mit einem signierten 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 CA Manager.

  3. Wählen Sie unter Zertifizierungsstellen die von Ihnen erstellte untergeordnete Zertifizierungsstelle aus.

  4. Klicken Sie auf Aktivieren.

  5. Klicken Sie im sich öffnenden Dialogfeld auf CSR herunterladen, um die PEM-codierte CSR-Datei herunterzuladen, die die ausstellende Zertifizierungsstelle signieren kann.

  6. Klicken Sie auf Weiter.

  7. Klicken Sie im Feld Zertifikatkette hochladen auf Durchsuchen.

  8. Laden Sie die signierte Zertifikatsdatei mit der Erweiterung .crt hoch.

  9. Klicken Sie auf Activate (Aktivieren).

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID \
  --pem-chain ./chain.crt

Ersetzen Sie Folgendes:

  • SUBORDINATE_CA_ID: die eindeutige Kennung der untergeordneten Zertifizierungsstelle, die Sie aktivieren möchten.
  • SUBORDINATE_POOL_ID: der Name des CA-Pools, der die untergeordnete Zertifizierungsstelle enthält.

Das Flag --pem-chain ist erforderlich. Dieses Flag nimmt die Datei mit der Liste der PEM-codierten Zertifikate an. Die Liste der Zertifikate beginnt mit dem aktuellen Zertifikat der Zertifizierungsstelle und endet mit dem Zertifikat der Stammzertifizierungsstelle.

Weitere Informationen zum Befehl gcloud privateca subordinates activate finden Sie unter gcloud privateca subordinates activate.

Wenn das signierte Zertifikat hochgeladen wird, wird die folgende Meldung zurückgegeben:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Speichern Sie das signierte CA-Zertifikat lokal als subordinate.crt.
  2. Speichern Sie die CA-Zertifikate der Unterzeichner lokal als rootCA.crt.
  3. Entfernen Sie die Konfiguration zum Abrufen des CSR, die im ersten Schritt erwähnt wurde, da versucht wird, den CSR abzurufen, was nach der CA-Aktivierung nicht zulässig ist.
  4. Aktualisieren Sie die Konfiguration der untergeordneten Zertifizierungsstelle mit den folgenden Feldern und führen Sie terraform apply aus.

      pem_ca_certificate     = file("subordinate.crt")
      subordinate_config {
        pem_issuer_chain {
            pem_certificates = [file("rootCA.crt")] 
        }
      }
    

    Wenn die Ausstellerkette mehr als eine Zertifizierungsstelle enthält, geben Sie den Wert als [file("intermediateCA.cert"), file("rootCA.crt")] an.

Nächste Schritte