Zertifikatsvorlage erstellen

Auf dieser Seite werden die Attribute einer Zertifikatsvorlage beschrieben und erklärt, wie Sie eine Zertifikatsvorlage erstellen. Weitere Informationen zu Zertifikatsvorlagen finden Sie unter Zertifikatsvorlagen.

Erforderliche Rollen

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, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Zertifikatsvorlage benötigen. 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 Zertifikatsvorlage 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 Standort für die Zertifikatsvorlage aus. Dies muss derselbe Standort wie der CA-Pool sein, den Sie mit der Zertifikatsvorlage verwenden möchten.

  4. Geben Sie im Feld Zertifikatsvorlagen-ID eine eindeutige ID für die Zertifikatsvorlage ein. Optional können Sie eine Beschreibung für die Zertifikatsvorlage angeben.

  5. Klicken Sie auf Weiter.

  6. Wenn Sie Standardwerte für X.509-Zertifikate konfigurieren möchten, die diese Vorlage verwenden, klicken Sie auf den Ein/Aus-Button 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 anhand der 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üsselverwendung.

    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 eine der aufgeführten Optionen 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 spezifischere und genauere Einschränkungen für die Verwendung des Schlüssels, z. B. für die Serverauthentifizierung, Clientauthentifizierung, Codesignierung und 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 den Ein/Aus-Button Erweiterte Schlüsselverwendungen für Bescheinigungen angeben, die von diesem Zertifizierungsstellen-Pool ausgestellt werden und wählen Sie dann eine der aufgeführten Optionen aus.
    2. Klicken Sie auf Weiter.

    Richtlinien-IDs definieren

    Die Erweiterung „Zertifikatsrichtlinien“ 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 der CA-Pool ausstellt, und sehen, wie die Zertifikate verwendet werden.

    Weitere Informationen finden Sie unter Zertifikatsrichtlinien.

    So geben Sie die Richtlinie an, die die Zertifikatsverwendung definiert:

    1. Optional: Fügen Sie die Richtlinien-ID im Feld Richtlinien-IDs hinzu.
    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 Widerrufsstatus 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 der 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 Zertifikatsvorlage definiert, wie das resultierende Zertifikat in einer Zertifizierungsstellenhierarchie (Certificate Authority, CA) verwendet werden kann. Es bestimmt im Wesentlichen, ob ein Zertifikat zum Signieren anderer Zertifikate verwendet werden kann und wenn 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 Zertifizierungsstellen-X.509-Erweiterungen einschließen: Geben Sie die Einstellungen in einer Zertifikatsvorlage an, die die X.509-Erweiterungen steuern.

    2. Ausgestellte Zertifikate auf die ausschließliche Verwendung für CAs einschränken: Diese Option wird nur angezeigt, wenn Sie das im vorherigen Schritt erwähnte Kästchen auswählen. Dieser boolesche Wert gibt an, ob das Zertifikat ein CA-Zertifikat ist. Wenn er auf true gesetzt ist, kann das Zertifikat zum Signieren anderer Zertifikate verwendet werden. Wenn er auf false gesetzt ist, handelt es sich um ein Endentitätzertifikat, das keine anderen Zertifikate signieren kann. Wenn Sie auf diesen Ein/Aus-Button 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 Kette von Zertifikaten sein kann, die von einem bestimmten Zertifikat ausgeht.Sie geben die maximale Anzahl von Zertifizierungsstellen an, die mit diesem CA-Zertifikat verkettet werden können. Wenn die maximale Länge des Ausstellerpfads auf 0 gesetzt ist, kann die CA 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 ist, ist die Anzahl der untergeordneten CAs in der Kette unter dieser CA unbegrenzt.

    4. Klicken Sie auf Weiter.

    Zusätzliche Erweiterungen konfigurieren

    Optional: Sie können zusätzliche benutzerdefinierte Erweiterungen konfigurieren, die in die von der Zertifizierungsstelle ausgestellten Zertifikate aufgenommen werden sollen. Gehen Sie dazu so vor:

    1. Klicken Sie auf Zeile hinzufügen.
    2. Fügen Sie im Feld Objektkennung eine gültige Objektkennung hinzu, die aus punktgetrennten Ziffern besteht.
    3. Fügen Sie im Feld Wert den base64-codierten Wert für die Kennung hinzu.
    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 Zertifikatserweiterungen 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 die Zertifikate aufgenommen werden sollen, die der CA-Pool ausstellt.

  11. Klicken Sie auf Weiter und gehen Sie zum Abschnitt Einschränkungen für Identitäten konfigurieren. Wenn Sie Einschränkungen für den Antragsteller und die SANs in den Zertifikaten konfigurieren möchten, die der CA-Pool ausstellt, 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 Einschränkungen für Identitäten konfigurieren einen CEL-Ausdruck (Common Expression Language) hinzu, um Einschränkungen für Zertifikatsantragsteller 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 Zertifikatsvorlage.
  • FILE_PATH: die YAML-Datei, die die von der Zertifikatsvorlage festgelegten X.509-Werte beschreibt.

Mit dem Flag --copy-sans kann die Erweiterung „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 Antragsteller aus der Zertifikatsanfrage zu entfernen.

Das Flag --identity-cel-expression verwendet einen CEL-Ausdruck, der vor der Ausstellung des Zertifikats für den Antragsteller und den alternativen Antragstellernamen des Zertifikats ausgewertet wird und einen booleschen Wert zurückgibt, der angibt, ob die Anfrage zulässig sein soll. Informationen zur Verwendung eines Common Expression Language (CEL)-Ausdrucks 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, die alle vordefinierten X.509-Werte beschreibt, die von dieser Vorlage festgelegt wurden. Die angegebenen Erweiterungen werden in alle Zertifikatsanfragen kopiert, die diese Vorlage verwenden, und haben Vorrang vor allen zulässigen Erweiterungen in der Zertifikatsanfrage. Wenn Sie einen Teil der vordefinierten X.509-Werte aktualisieren, ersetzt die Aktualisierung die gesamte Gruppe der vordefinierten X.509-Werte.

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 eine Zertifikatsvorlagenkonfiguration:

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 in der YAML-Datei nicht angegeben sind, werden entweder weggelassen oder standardmäßig auf false gesetzt.

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

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

Die folgenden Erweiterungen werden standardmäßig auf false gesetzt, wenn kein Wert angegeben ist:

  • Feld isCa in der Erweiterung caOptions

Zertifikatsvorlage für häufige Szenarien erstellen

In diesem Abschnitt finden Sie gcloud-Befehle zum Erstellen einer Zertifikatsvorlage für häufige Anwendungsfälle.

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

So erstellen Sie eine Zertifikatsvorlage zum Ausstellen von TLS-Zertifikaten für Server, die eine beliebige Domain 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 nur mit Testdomains

Verwenden Sie den folgenden gcloud-Befehl, um eine Zertifikatsvorlage zum Ausstellen von TLS-Zertifikaten für Server 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 einer bestimmten Zeichenfolge beginnen oder enden, finden Sie unter CEL-Beispielausdrücke.

Zertifikate für Arbeitslastidentitäten

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 gegenseitiges TLS für Endentitäten hinzu.

    leaf_mtls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
        clientAuth: true
    caOptions:
      isCa: false
    
  2. Verwenden Sie den folgenden gcloud Befehl, um nur Zertifikate mit SPIFFE URI-SANs zuzulassen:

    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 einer bestimmten Zeichenfolge beginnen oder enden, finden Sie unter CEL-Beispielausdrücke.

Zugriff auf die Zertifikatsvorlage 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 Zertifizierungsstelle Service-Zertifikatsvorlage“ den Mitgliedern in 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 Zertifikatsvorlage.

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