Zertifikatsvorlage erstellen

Auf dieser Seite werden die Attribute einer Zertifikatvorlage beschrieben und es wird erläutert, wie Sie eine Zertifikatvorlage erstellen können. Weitere Informationen zu Zertifikatsvorlagen finden Sie unter Zertifikatsvorlagen.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Zertifikatvorlage benötigen, bitten Sie Ihren Administrator, Ihnen die IAM-Rolle CA Service Operation Manager (roles/privateca.caManager) für das Projekt, den Ordner oder die Organisation zuzuweisen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Zertifikatsvorlage erstellen

Verwenden Sie eine der folgenden Methoden, um eine Zertifikatvorlage zu 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 Vorlagenmanager und dann auf Vorlage erstellen.

  3. Wählen Sie in der Liste Region einen Speicherort für die Zertifikatsvorlage aus. Dies muss derselbe Standort sein wie der CA-Pool, den Sie mit der Zertifikatvorlage verwenden möchten.

  4. Geben Sie im Feld ID der Zertifikatsvorlage eine eindeutige Kennung für die Zertifikatsvorlage ein. Geben Sie optional eine Beschreibung für die Zertifikatsvorlage an.

  5. Klicken Sie auf Weiter.

  6. Wenn Sie x.509-Standardwerte für Zertifikate konfigurieren möchten, die diese Vorlage verwenden, klicken Sie auf die Ein/Aus-Schaltfläche Vordefinierte Werte in Zertifikate einschließen, die mit dieser Zertifikatsvorlage ausgestellt werden. Klicken Sie dann auf Vordefinierte Werte konfigurieren.

  7. Richten Sie die vordefinierten Werte mit den folgenden Informationen ein:

    Basisschlüsselverwendung definieren

    Diese Einstellung bezieht sich auf das Feld Key Usage in einem digitalen Zertifikat. Sie gibt an, wie der private Schlüssel des Zertifikats verwendet werden kann, z. B. für die Schlüsselverschlüsselung, Datenverschlüsselung, Zertifikatsignierung und CRL-Signierung. Weitere Informationen finden Sie unter Schlüsselnutzung.

    1. Wenn Sie die Basisschlüsselverwendungen auswählen möchten, klicken Sie auf den Schalter Basisschlüsselverwendungen für Zertifikate angeben, die von diesem CA-Pool ausgestellt werden und wählen Sie dann die gewünschten Optionen aus der Liste aus.
    2. Klicken Sie auf Weiter.

    Erweiterte Schlüsselverwendung definieren

    Diese Einstellung bezieht sich auf das Feld Extended Key Usage (EKU) in einem digitalen Zertifikat. Sie bietet genauere und präzisere Einschränkungen für die Verwendung des Schlüssels, z. B. für die Server- und Clientauthentifizierung, die Codesignierung und den E‑Mail-Schutz. Weitere Informationen finden Sie unter Erweiterte Schlüsselverwendung.

    Erweiterte Schlüsselverwendungen werden mit Objektkennungen (Object Identifiers, OIDs) definiert. Wenn Sie die erweiterten Schlüsselverwendungen nicht konfigurieren, sind alle Schlüsselverwendungsszenarien zulässig.

    1. Wenn Sie die erweiterten Schlüsselverwendungen auswählen möchten, klicken Sie auf die Ein/Aus-Schaltfläche Erweiterte Schlüsselverwendungen für Zertifikate schreiben, die von diesem CA-Pool ausgestellt werden und wählen Sie dann die gewünschten Optionen aus.
    2. Klicken Sie auf Weiter.

    Richtlinienkennungen definieren

    Die Erweiterung „certificatePolicies“ im Zertifikat gibt die Richtlinien an, die der ausstellende CA-Pool befolgt. Diese Erweiterung kann Informationen dazu enthalten, wie Identitäten vor der Zertifikatsausstellung validiert werden, wie Zertifikate widerrufen werden und wie die Integrität des CA-Pools sichergestellt wird. Mit dieser Erweiterung können Sie die Zertifikate überprüfen, die vom CA-Pool ausgestellt werden, und sehen, wie die Zertifikate verwendet werden.

    Weitere Informationen finden Sie unter Zertifikatsrichtlinien.

    So legen Sie die Richtlinie fest, die die Zertifikatsnutzung definiert:

    1. Optional: Fügen Sie die Richtlinien-ID in das Feld Richtlinien-IDs ein.
    2. Klicken Sie auf Weiter.

    AIA-OCSP-Server (Authority Information Access) hinzufügen

    Die AIA-Erweiterung in einem Zertifikat enthält die folgenden Informationen:

    • Adresse der OCSP-Server, über die Sie den Sperrstatus des Zertifikats prüfen können.
    • Die Zugriffsmethode für den Aussteller des Zertifikats.

    Weitere Informationen finden Sie unter Authority Information Access.

    Das Hinzufügen von OCSP-Servern ist optional. So fügen Sie die OCSP-Server hinzu, die im Feld „AIA-Erweiterung“ in den Zertifikaten angezeigt werden:

    1. Klicken Sie auf Zeile hinzufügen.
    2. Fügen Sie im Feld Server URL die URL des OCSP-Servers hinzu.
    3. Klicken Sie auf Fertig.
    4. Klicken Sie auf Weiter.

    CA-Optionen

    Das Feld CA-Optionen in einer Zertifikatvorlage definiert, wie das resultierende Zertifikat in einer Zertifizierungsstellenhierarchie verwendet werden kann. Es bestimmt im Wesentlichen, ob ein Zertifikat zum Signieren anderer Zertifikate verwendet werden kann und, falls ja, welche Einschränkungen für die von ihm ausgestellten Zertifikate gelten.

    Wählen Sie aus den folgenden Optionen aus:

    1. Konfigurationen zum Beschreiben der CA-X.509-Erweiterungen einschließen: Geben Sie die Einstellungen in einer Zertifikatsvorlage an, mit denen die X.509-Erweiterungen gesteuert werden.

    2. Ausgestellte Zertifikate auf die ausschließliche Verwendung für CAs einschränken: Diese Option wird nur angezeigt, wenn Sie das Kästchen im vorherigen Schritt aktivieren. Dieser boolesche Wert gibt an, ob das Zertifikat ein CA-Zertifikat ist. Wenn der Wert auf true festgelegt ist, kann das Zertifikat zum Signieren anderer Zertifikate verwendet werden. Wenn false, handelt es sich um ein Zertifikat für Endentitäten, mit dem keine anderen Zertifikate signiert werden können. Wenn Sie auf diesen Schalter klicken, werden Sie aufgefordert, Namenseinschränkungen für die Erweiterung in CA-Zertifikaten zu definieren.

    3. Konfigurationen zum Beschreiben der Pfadlängeneinschränkung für X.509-Erweiterungen einschließen: Geben Sie die Einstellungen an, die steuern, wie lang eine Zertifikatskette sein darf, die von einem bestimmten Zertifikat ausgeht.Damit wird die maximale Anzahl von Zertifizierungsstellen angegeben, die mit diesem CA-Zertifikat verkettet werden können. Wenn die maximale Ausstellerpfadlänge auf 0 festgelegt ist, kann die Zertifizierungsstelle nur Endentitätzertifikate ausstellen. Wenn sie auf 1 gesetzt ist, kann die Kette unter diesem CA-Zertifikat nur eine untergeordnete CA enthalten. Wenn kein Wert deklariert wird, ist die Anzahl der untergeordneten Zertifizierungsstellen in der Kette unter dieser Zertifizierungsstelle unbegrenzt.

    4. Klicken Sie auf Weiter.

    Zusätzliche Erweiterungen konfigurieren

    Optional: Sie können zusätzliche benutzerdefinierte Erweiterungen konfigurieren, die in die vom CA-Pool ausgestellten Zertifikate aufgenommen werden sollen. Gehen Sie dazu so vor:

    1. Klicken Sie auf Zeile hinzufügen.
    2. Fügen Sie im Feld Object identifier (Objektkennung) eine gültige Objektkennung hinzu, die aus punktgetrennten Ziffern besteht.
    3. Fügen Sie im Feld Value den base64-codierten Wert für die Kennung ein.
    4. Wenn die Erweiterung kritisch ist, wählen Sie Erweiterung ist kritisch aus.
  8. Klicken Sie auf Fertig, um alle vordefinierten Werte zu speichern.

  9. Gehen Sie als Nächstes zum Abschnitt Einschränkungen für Erweiterungen konfigurieren. Wählen Sie eine der folgenden Optionen aus:

    • Alle Erweiterungen aus Zertifikatsanfragen in das Zertifikat kopieren
    • Alle Erweiterungen aus Zertifikatsanfragen löschen
    • Bestimmte Erweiterungen aus Zertifikatsanfragen in das Zertifikat kopieren
  10. Wenn Sie bestimmte Erweiterungen kopieren möchten, haben Sie folgende Möglichkeiten:
    • Klicken Sie auf das Feld Bekannte Zertifikaterweiterungen und entfernen Sie die nicht benötigten Erweiterungen aus der Liste.
    • Fügen Sie im Feld Benutzerdefinierte Erweiterungen die Objektkennungen für Erweiterungen hinzu, die in den Zertifikaten enthalten sein sollen, die vom CA-Pool ausgestellt werden.

  11. Klicken Sie auf Weiter und rufen Sie den Bereich Identitätseinschränkungen konfigurieren auf. Wenn Sie Einschränkungen für den Antragsteller und die SANs in den Zertifikaten konfigurieren möchten, die vom CA-Pool ausgestellt werden, wählen Sie eine oder beide der folgenden Optionen aus:

    • Antragsteller aus Zertifikatsanfragen in das Zertifikat kopieren
    • Alternative Antragstellernamen (Subject Alternative Name, SAN) aus Zertifikatsanfragen in das Zertifikat kopieren
    Optional: Fügen Sie im Abschnitt Identitätseinschränkungen konfigurieren einen CEL-Ausdruck (Common Expression Language) hinzu, um Einschränkungen für Zertifikatsubjekte zu definieren. Weitere Informationen finden Sie unter CEL verwenden.

  12. Klicken Sie auf Weiter und dann auf Fertig.

gcloud

gcloud privateca templates create TEMPLATE_ID \
  --copy-subject \
  --copy-sans \
  --identity-cel-expression <expr> \
  --predefined-values-file FILE_PATH \
  --copy-all-requested-extensions \
  --copy-extensions-by-oid <1.2.3.4,5.6.7.8> \
  --copy-known-extensions <ext1,ext2>

Ersetzen Sie Folgendes:

  • TEMPLATE_ID: die eindeutige Kennung der Zertifikatvorlage.
  • FILE_PATH: Die YAML-Datei, die die von der Zertifikatvorlage festgelegten X.509-Werte beschreibt.

Mit dem Flag --copy-sans kann die Erweiterung für den alternativen Antragstellernamen (Subject Alternative Name, SAN) aus der Zertifikatsanfrage in das signierte Zertifikat kopiert werden. Alternativ können Sie --no-copy-sans angeben, um alle vom Aufrufer angegebenen SANs aus der Zertifikatsanfrage zu entfernen.

Mit dem Flag --copy-subject kann der Antragsteller aus der Zertifikatsanfrage in das signierte Zertifikat kopiert werden. Alternativ können Sie --no-copy-subject angeben, um alle vom Aufrufer angegebenen Betreffzeilen aus der Zertifikatsanfrage zu entfernen.

Das Flag --identity-cel-expression verwendet einen CEL-Ausdruck, der vor der Ausstellung des Zertifikats für den Inhaber und den alternativen Inhabernamen (Subject Alternative Name, SAN) des Zertifikats ausgewertet wird. Er gibt einen booleschen Wert zurück, der angibt, ob die Anfrage zulässig sein soll. Informationen zur Verwendung eines CEL-Ausdrucks (Common Expression Language) für eine Zertifikatsvorlage finden Sie unter CEL für Zertifikatsvorlagen verwenden.

Das Flag --predefined-values-file gibt den Pfad zu einer YAML-Datei an, in der alle vordefinierten X.509-Werte beschrieben werden, die von dieser Vorlage festgelegt werden. Die bereitgestellten Erweiterungen werden in alle Zertifikatsanfragen kopiert, die diese Vorlage verwenden. Sie haben Vorrang vor allen zulässigen Erweiterungen in der Zertifikatsanfrage. Wenn Sie einen Teil der vordefinierten X.509-Werte aktualisieren, wird der gesamte Satz der vordefinierten X.509-Werte ersetzt.

Wenn das Flag --copy-all-requested-extensions festgelegt ist, werden alle in der Zertifikatsanfrage angegebenen Erweiterungen in das signierte Zertifikat kopiert.

Wenn das Flag --copy-extensions-by-oid festgelegt ist, werden bestimmte OIDs aus der Zertifikatsanfrage in das signierte Zertifikat kopiert.

Wenn das Flag --copy-known-extensions festgelegt ist, werden bestimmte Erweiterungen aus der Zertifikatsanfrage in das signierte Zertifikat kopiert. Diese bekannten Erweiterungen können eine der folgenden sein: base-key-usage, extended-key-usage, ca-options, policy-ids oder aia-ocsp-servers.

Entfernen Sie das Flag --copy-all-requested-extensions, um alle X.509-Erweiterungen in der Zertifikatsanfrage zu ignorieren, aber die in dieser Vorlage definierten vordefinierten Werte beizubehalten.

Hier sehen Sie ein Beispiel für die Konfiguration einer Zertifikatsvorlage:

keyUsage:
  baseKeyUsage:
    digitalSignature: true
    keyEncipherment: true
    contentCommitment: false
    dataEncipherment: false
    keyAgreement: false
    certSign: false
    crlSign: false
    encipherOnly: false
    decipherOnly: false
  extendedKeyUsage:
    serverAuth: true
    clientAuth: false
    codeSigning: false
    emailProtection: false
    timeStamping: false
    ocspSigning: false
caOptions:
  isCa: true
  maxIssuerPathLength: 1
policyIds:
- objectIdPath:
  - 1
  - 2
  - 3
additionalExtensions:
- objectId:
    objectIdPath:
    - 1
    - 2
    - 3
  critical: false
  value: "base64 encoded extension value"

Werte, die nicht in der YAML-Datei angegeben sind, werden entweder weggelassen oder auf false gesetzt.

Die folgenden Erweiterungen werden ausgelassen, wenn kein Wert angegeben ist:

  • keyUsage
  • policyIds
  • additionalExtensions
  • Das Feld maxIssuerPathLength in der Erweiterung caOptions

Für die folgenden Erweiterungen gilt standardmäßig false, wenn kein Wert angegeben ist:

  • Das Feld isCa in der Erweiterung caOptions

Zertifikatsvorlage für gängige Szenarien erstellen

In diesem Abschnitt finden Sie gcloud-Befehle zum Erstellen einer Zertifikatvorlage für gängige Anwendungsfälle.

TLS-Zertifikate für DNS-Server für eine beliebige Domain

So erstellen Sie eine Zertifikatvorlage zum Ausstellen von Server-TLS-Zertifikaten, die beliebige Domains zulassen:

  1. Erstellen Sie eine Datei mit dem Namen leaf_server_tls_values.yaml und fügen Sie ihr die folgende TLS-Konfiguration für Endentitätsserver hinzu:

    leaf_server_tls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
    caOptions:
      isCa: false
    
  2. Führen Sie den folgenden gcloud-Befehl aus, um nur Zertifikate mit SANs vom Typ DNS zuzulassen:

    gcloud

    gcloud privateca templates create server-tls \
      --predefined-values-file leaf_server_tls_values.yaml \
      --copy-sans --no-copy-subject \
      --identity-cel-expression "subject_alt_names.all(san, san.type == DNS)"
    

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

TLS-Zertifikate für DNS-Server mit nur Testdomains

Verwenden Sie den folgenden gcloud-Befehl, um eine Zertifikatvorlage zum Ausstellen von Server-TLS-Zertifikaten mit DNS-SANs zu erstellen, die auf Testdomains beschränkt sind:

gcloud

gcloud privateca templates create server-tls \
  --predefined-values-file leaf_server_tls_values.yaml \
  --copy-sans --no-copy-subject \
  --identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"

Der Inhalt der Datei leaf_server_tls_values.yaml muss mit dem vorherigen Beispiel übereinstimmen.

Weitere Informationen zur Verwendung von CEL-Ausdrücken, um sicherzustellen, dass DNS-Namen mit einem bestimmten String beginnen oder enden, finden Sie unter CEL-Beispielausdrücke.

Workload Identity-Zertifikate

So erstellen Sie eine Zertifikatsvorlage zum Ausstellen von Zertifikaten für gegenseitiges TLS (mTLS):

  1. Erstellen Sie eine Datei mit dem Namen leaf_mtls_values.yaml und fügen Sie ihr die folgende Konfiguration für die gegenseitige TLS-Authentifizierung für Endentitäten hinzu.

    leaf_mtls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
        clientAuth: true
    caOptions:
      isCa: false
    
  2. Wenn Sie nur Zertifikate mit SPIFFE-URI-SANs zulassen möchten, verwenden Sie den folgenden gcloud-Befehl:

    gcloud

    gcloud privateca templates create workload-spiffe \
      --predefined-values-file leaf_mtls_values.yaml \
      --copy-sans --no-copy-subject \
      --identity-cel-expression "subject_alt_names.all(san, san.type == URI && san.value.startsWith('spiffe://'))"
    

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

Weitere Informationen zur Verwendung von CEL-Ausdrücken, um sicherzustellen, dass DNS-Namen mit einem bestimmten String beginnen oder enden, finden Sie unter CEL-Beispielausdrücke.

Zugriff auf die Zertifikatvorlage gewähren

Sie können eine Zertifikatsvorlage verwenden, wenn Sie die Rolle „Nutzer der CA Service-Zertifikatsvorlage“ (roles/privateca.templateUser) haben. Wir empfehlen, dass die Autoren einer Zertifikatsvorlage die Rolle „Nutzer der CA Service-Zertifikatsvorlage“ den Mitgliedern der Organisation zuweisen, die diese Zertifikatsvorlage verwenden könnten.

Verwenden Sie den folgenden gcloud-Befehl, um allen Nutzern in der Domain example.com die Rolle „Nutzer der CA Service-Zertifikatsvorlage“ (roles/privateca.templateUser) zuzuweisen:

gcloud

gcloud privateca templates add-iam-policy-binding TEMPLATE_ID \
  --member "domain:example.com" \
  --role "roles/privateca.templateUser"

Ersetzen Sie Folgendes:

  • TEMPLATE_ID: die eindeutige Kennung der Zertifikatvorlage.

Weitere Informationen zum Befehl gcloud privateca templates add-iam-policy-binding finden Sie unter gcloud privateca templates add-iam-policy-binding.

Weitere Informationen zu IAM-Rollen für CA Service und den zugehörigen Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Nächste Schritte