Untergeordnete CA aus einer externen CA erstellen

Auf dieser Seite wird beschrieben, wie Sie eine untergeordnete Zertifizierungsstelle (Certificate Authority, CA) erstellen, die mit einer externen Root-CA 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 verkettet ist. Der Schlüssel und die Vorgänge der externen Stammzertifizierungsstelle bleiben außerhalb von Google Cloud. Sie können die externe Stamm-CA nur verwenden, um das CA-Zertifikat der untergeordneten CA fürGoogle Cloudauszustellen. Die untergeordnete Zertifizierungsstelle wird sofort von jeder Arbeitslast als vertrauenswürdig eingestuft, die der externen Stammzertifizierungsstelle vertraut. Anschließend können Sie mit der untergeordneten CA Zertifikate ausstellen, ohne zur Laufzeit auf die externe Root-CA zurückgreifen zu müssen.

Hinweis

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

Untergeordnete CA aus einer externen CA erstellen

So erstellen Sie eine untergeordnete CA aus einer externen CA:

  1. CSR (Certificate Signing Request) für die untergeordnete Zertifizierungsstelle generieren: Im ersten Schritt wird eine CSR für die untergeordnete Zertifizierungsstelle generiert und dann heruntergeladen.

  2. Untergeordnete CA-Zertifikate von der externen Root-CA signieren lassen: Im zweiten Schritt senden Sie den CSR zur Signierung an die externe Root-CA. Achten Sie darauf, dass Sie die spezifischen Anweisungen der externen Root-CA zum Einreichen von CSRs und zum Abrufen signierter Zertifikate befolgen.

  3. Signiertes untergeordnetes CA-Zertifikat in CA Service importieren: Im letzten Schritt wird die signierte PEM-Zertifikatkette entweder über die Google Cloud CLI oder die Google Cloud Console hochgeladen.

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

CSR erstellen

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. Klicken Sie auf CA erstellen.

CA-Typ auswählen:

  1. Klicken Sie auf Untergeordnete CA.
  2. Geben Sie im Feld Gültig bis die Dauer ein, für die die von der untergeordneten CA ausgestellten Zertifikate gültig sein sollen.
  3. Klicken Sie auf Root-CA 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 die Unterteilung des Unternehmens oder die Geschäftseinheit ein.
  3. Optional: Geben Sie im Feld Ländername (C) einen zweistelligen Ländercode ein.
  4. Optional: Geben Sie im Feld Name des Bundeslands den Namen Ihres Bundeslands ein.
  5. Optional: Geben Sie im Feld Ortsname den Namen Ihrer Stadt ein.
  6. Geben Sie im Feld Allgemeiner Name der Zertifizierungsstelle (CN) den Namen der Zertifizierungsstelle ein.
  7. Klicken Sie auf Weiter.
Größe und Algorithmus von CA-Schlüsseln konfigurieren
  1. Wählen Sie den Schlüsselalgorithmus aus, der Ihren Anforderungen am besten entspricht. Weitere Informationen zu den Optionen für Signaturschlüssel finden Sie unter CA-Signaturschlüssel konfigurieren.
  2. Wenn Sie einen vom Kunden verwalteten Signaturschlüssel verwenden möchten, wählen Sie Vom Kunden verwalteter Schlüssel aus und geben Sie die Cloud Key Management Service-Kryptoschlüsselversion an.
  3. Klicken Sie auf Weiter.
CA-Artefakte konfigurieren
  1. Wählen Sie aus, ob Sie einen von Google verwalteten oder einen vom Kunden verwalteten Cloud Storage-Bucket verwenden möchten.
    1. Für einen von Google verwalteten Cloud Storage-Bucket erstellt CA Service einen von Google verwalteten Bucket am selben Standort wie die CA.
    2. Klicken Sie für einen vom Kunden verwalteten Cloud Storage-Bucket auf „Durchsuchen“ und wählen Sie einen der vorhandenen Cloud Storage-Buckets aus.
  2. 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 Label-Schlüssel und -Wert 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 Fertig, um die Zertifizierungsstelle zu erstellen.

CSR herunterladen

  1. Wählen Sie auf der Seite Zertifizierungsstelle die CA aus, die Sie aktivieren möchten.
  2. Klicken Sie auf Aktivieren.
  3. Klicken Sie im daraufhin geöffneten Dialogfeld 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 CA zu erstellen. Weitere Informationen finden Sie unter Zertifizierungsstellen-Pool erstellen.

    gcloud privateca pools create SUBORDINATE_POOL_ID --location=LOCATION
    

    Ersetzen Sie Folgendes:

    • SUBORDINATE_POOL_ID: der Name des CA-Pools
    • LOCATION: der Standort des CA-Pools
  2. Führen Sie den folgenden gcloud-Befehl aus, um eine untergeordnete CA 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 \
          --location=LOCATION \
          --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
    • LOCATION: der Standort des CA-Pools
    • FILE_NAME: Der Name der Datei, in die die PEM-codierte CSR geschrieben wird

    Das Flag --key-algorithm gibt den kryptografischen Algorithmus an, den Sie zum Erstellen eines verwalteten Cloud HSM-Schlüssels für die Zertifizierungsstelle verwenden möchten.

    Das Flag --subject gibt den X.501-Namen des Zertifikatsubjekts an.

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

    Führen Sie den folgenden Befehl aus, um eine untergeordnete Zertifizierungsstelle mit einem vom Kunden verwalteten Signaturschlüssel zu erstellen:

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --kms-key-version=KMS_KEY_VERSION \
          --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
    • LOCATION: der Standort des CA-Pools
    • FILE_NAME: Der Name der Datei, in die die PEM-codierte CSR geschrieben wird
    • KMS_KEY_VERSION: die vollständige Ressourcen-ID einer vom Kunden verwalteten Cloud KMS-Version eines kryptografischen Schlüssels, die als Signaturschlüssel verwendet werden soll

    Weitere Informationen zu den Optionen für Signierschlüssel und zum Vorbereiten eines kundenverwalteten Signierschlüssels finden Sie unter Zertifizierungsstellen-Signierschlüssel konfigurieren.

Die folgende Anweisung wird zurückgegeben, wenn der CSR erstellt wird:

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 die 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 \
    --location=LOCATION

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. Hängen Sie die folgende Konfiguration an, um den 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

Geben Sie die generierte CSR-Datei an das Mitglied Ihrer Organisation weiter, das für die Ausstellung von Zertifikaten zuständig ist, und bitten Sie es, die Datei zu signieren. Die genauen Schritte hängen von der Einrichtung Ihrer Organisation ab.

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

Shell

Konfigurieren Sie die Einstellungen für die neue Stammzertifizierungsstelle.

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 Zertifikat der untergeordneten CA 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 den CSR der untergeordneten CA mit diesem Root.

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 in einer einzigen Datei.

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

Signiertes Zertifikat hochladen

So aktivieren Sie eine untergeordnete CA mit einem signierten Zertifikat:

Console

  1. Rufen Sie in derGoogle 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 untergeordnete Zertifizierungsstelle aus, die Sie erstellt haben.

  4. Klicken Sie auf Aktivieren.

  5. Klicken Sie im geöffneten Dialogfeld auf CSR herunterladen, um die PEM-codierte CSR-Datei herunterzuladen, die von der ausstellenden Zertifizierungsstelle signiert werden 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 \
    --location=LOCATION \
    --pem-chain ./chain.crt

Ersetzen Sie Folgendes:

  • SUBORDINATE_CA_ID: die eindeutige Kennung der untergeordneten CA, die Sie aktivieren möchten
  • SUBORDINATE_POOL_ID: der Name des CA-Pools, der die untergeordnete CA enthält
  • LOCATION: der Standort des CA-Pools. Eine vollständige Liste der Standorte finden Sie unter Standorte.

Das Flag --pem-chain ist erforderlich. Mit diesem Flag wird eine Datei angegeben, die die Liste der PEM-codierten Zertifikate enthält. Die Liste der Zertifikate beginnt mit dem aktuellen CA-Zertifikat und endet mit dem Stamm-CA-Zertifikat.

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

Die folgende Meldung wird zurückgegeben, wenn das signierte Zertifikat hochgeladen wird:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Speichern Sie das signierte CA-Zertifikat lokal als subordinate.crt.
  2. Speichern Sie die CA-Zertifikate des Unterzeichners lokal als rootCA.crt.
  3. Entfernen Sie die im ersten Schritt erwähnte Konfiguration zum Abrufen des CSR, da nach der CA-Aktivierung kein CSR mehr abgerufen werden darf.
  4. Aktualisieren Sie die Konfiguration der untergeordneten CA 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 umfasst, geben Sie den Wert als [file("intermediateCA.cert"), file("rootCA.crt")] an.

Nächste Schritte