Richtlinien für die Zertifikatsausstellung hinzufügen

Wenn Sie Richtlinien für die Ausstellung von Zertifikaten im CA-Dienst hinzufügen, müssen Sie Regeln und Einschränkungen definieren, die die von einer Zertifizierungsstelle (CA) ausgestellten Zertifikatstypen regeln. Weitere Informationen zu Richtlinien für die Zertifikatsausstellung finden Sie unter Richtlinien für die Zertifikatsausstellung.

Mit einer Richtlinie für die Zertifikatausstellung können Sie den Antragsteller und die alternativen Antragstellernamen (Subject Alternative Names, SANs) angeben, die in den ausgestellten Zertifikaten enthalten sein können. Sie können die Richtlinie für die Zertifikatausstellung beim Erstellen eines CA-Pools angeben oder einen vorhandenen CA-Pool aktualisieren, um eine Ausstellungsrichtlinie hinzuzufügen.

Weitere Informationen finden Sie unter Vorlagen und Richtlinien für die Ausstellung von Karten und Tickets – Übersicht.

Hinweise

  • Sie benötigen die IAM-Rolle „Operation Manager für CA Service“ (roles/privateca.caManager) oder „CA Service Admin“ (roles/privateca.admin). Informationen zum Zuweisen einer IAM-Rolle an ein Hauptkonto finden Sie unter Einzelne Rolle zuweisen.

  • Erstellen Sie einen CA-Pool.

Sie können einem CA-Pool eine Richtlinie für die Zertifikatsausstellung hinzufügen, wenn Sie einen CA-Pool erstellen oder einen vorhandenen CA-Pool aktualisieren.

Gehen Sie nach einer der folgenden Methoden vor:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Certificate Authority Service auf. Zum Certificate Authority Service

  2. Klicken Sie auf der Seite CA-Poolmanager auf den Namen des CA-Pools, für den Sie eine Ausstellungsrichtlinie für Zertifikate hinzufügen möchten.

  3. Klicken Sie auf der Seite CA-Pool auf Bearbeiten.

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, die Datenverschlüsselung, die Zertifikatsignatur und die CRL-Signatur. Weitere Informationen finden Sie unter Schlüsselnutzung.

  1. Klicken Sie zum Auswählen der Basisschlüsselverwendungen auf die Ein/Aus-Schaltfläche 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 enthält genauere und detailliertere Einschränkungen für die Verwendung des Schlüssels, z. B. für die Server-, Client-, Codesignatur- und E-Mail-Authentifizierung. Weitere Informationen finden Sie unter Erweiterte Schlüsselnutzung.

Erweiterte Schlüsselverwendungen werden mit Objekt-IDs (OIDs) definiert. Wenn Sie die erweiterten Schlüsselverwendungen nicht konfigurieren, sind alle Szenarien für die Schlüsselverwendung zulässig.

  1. Klicken Sie zum Auswählen der erweiterten Schlüsselverwendungen auf die Ein/Aus-Schaltfläche Erweiterte Schlüsselverwendungen in Zertifikate schreiben, die von diesem CA-Pool ausgestellt werden und wählen Sie dann eine der aufgeführten Optionen aus.
  2. Klicken Sie auf Weiter.
Richtlinienkennungen definieren

Die Erweiterung „Zertifikatsrichtlinien“ im Zertifikat enthält die Richtlinien, denen der ausstellende CA-Pool folgt. Diese Erweiterung kann Informationen dazu enthalten, wie Identitäten vor der Zertifikatsausstellung validiert, Zertifikate widerrufen und die Integrität des CA-Pools sichergestellt werden. Mit dieser Erweiterung können Sie die vom CA-Pool ausgestellten Zertifikate überprüfen und sehen, wie sie verwendet werden.

Weitere Informationen finden Sie unter Zertifizierungsrichtlinien.

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

  1. Fügen Sie die Richtlinien-ID in das Feld Richtlinien-IDs ein.
  2. Klicken Sie auf Weiter.
AIA-OCSP-Server 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 Zugriff auf Informationen zu Behörden.

So fügen Sie die OCSP-Server hinzu, die in den Zertifikaten im Feld „AIA-Erweiterung“ 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

Im Feld CA-Optionen einer Zertifikatsvorlage wird festgelegt, wie das resultierende Zertifikat in einer Zertifizierungsstellenhierarchie verwendet werden kann. Mit CA-Optionen wird festgelegt, ob ein Zertifikat zum Signieren anderer Zertifikate verwendet werden kann und gegebenenfalls welche Einschränkungen für die von ihr 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, die die X.509-Erweiterungen steuern.

  2. Ausgestellte Zertifikate auf die ausschließliche Verwendung für Zertifizierungsstellen einschränken: Diese Option wird nur angezeigt, wenn Sie das Kästchen im vorherigen Schritt angeklickt haben. Dieser boolesche Wert gibt an, ob es sich bei dem Zertifikat um ein CA-Zertifikat handelt. Wenn true festgelegt ist, kann das Zertifikat zum Signieren anderer Zertifikate verwendet werden. Wenn false, ist das Zertifikat ein Endentitätszertifikat und kann keine anderen Zertifikate signieren. Wenn Sie auf diese Ein/Aus-Schaltfläche klicken, werden Sie aufgefordert, Namenseinschränkungen für die Erweiterung in CA-Zertifikaten zu definieren.

  3. Konfiguratioen 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 kann, die von einem bestimmten Zertifikat ausgeht. Wenn die maximale Ausstellerpfadlänge auf 0 festgelegt ist, kann die Zertifizierungsstelle nur Endentitätszertifikate ausstellen. Wenn der Wert auf 1 festgelegt ist, kann die Kette unter diesem CA-Zertifikat nur eine untergeordnete Zertifizierungsstelle enthalten. Wenn kein Wert angegeben wird, ist die Anzahl der untergeordneten Zertifizierungsstellen in der Kette unter dieser Zertifizierungsstelle unbegrenzt.

  4. Klicken Sie auf Weiter.
Zusätzliche Erweiterungen konfigurieren

So konfigurieren Sie zusätzliche benutzerdefinierte Erweiterungen, die in den vom CA-Pool ausgestellten Zertifikaten enthalten sein sollen:

  1. Klicken Sie auf Zeile hinzufügen.
  2. Fügen Sie im Feld Objektkennung eine gültige Objektkennung in Form von punktgetrennten Ziffern ein.
  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.

Klicken Sie auf Fertig, um alle Konfigurationen für Basiswerte zu speichern.

gcloud

Wenn Sie mit der Google Cloud CLI einem CA-Pool eine Richtlinie für die Zertifikatsausstellung hinzufügen möchten, müssen Sie eine YAML-Datei erstellen, in der die Einschränkungen für die Zertifikate beschrieben werden, die der CA-Pool ausstellen kann. Der Inhalt entspricht einer IssuancePolicy.

  1. Erstellen Sie mit dem Cloud Shell-Editor eine Datei policy.yaml mit folgendem Inhalt:

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    Wobei:

    • allowSubjectPassthrough ist ein Pflichtfeld. Wenn das Feld allowSubjectPassthrough auf true festgelegt ist, wird das Subject-Feld aus einer Zertifikatsanfrage in das signierte Zertifikat kopiert. Andernfalls wird das angeforderte Thema verworfen.
    • Wenn das Feld allowSubjectAltNamesPassthrough auf true festgelegt ist, wird die SubjectAltNames-Erweiterung aus einer Zertifikatsanfrage in das signierte Zertifikat kopiert. Andernfalls werden die angeforderten SubjectAltNames verworfen.
  2. Führen Sie den folgenden Befehl aus, um die Richtlinie für die Zertifikatsausstellung eines CA-Pools mit der im vorherigen Schritt erstellten Datei zu aktualisieren:

    gcloud privateca pools update POOL_NAME --location LOCATION --issuance-policy FILE_PATH
    

    Ersetzen Sie Folgendes:

    • POOL_NAME: der Name des CA-Pools.
    • LOCATION: der Standort des CA-Pools. Eine vollständige Liste der Standorte finden Sie unter Standorte.
    • FILE_PATH: Pfad zur Datei policy.yaml.

    Weitere Informationen zum Befehl gcloud privateca pools update finden Sie unter gcloud privateca pools update.

Unterstützte Einschränkungen

Der CA-Dienst unterstützt die folgenden Einschränkungen der Richtlinien für die Ausstellung. Sie können die folgenden Einschränkungen nach Bedarf kombinieren, um eine benutzerdefinierte Richtlinie für die Ausstellung von Zertifikaten zu erstellen.

Zulässige X.509-Werte einschränken oder erzwingen

Ein CA-Pool kann die zulässigen X.509-Werte in Zertifikatsanfragen einschränken, indem das Feld passthrough_extensions konfiguriert wird.

Ein CA-Pool kann auch X.509-Werte angeben, die allen ausgestellten Zertifikaten hinzugefügt werden sollen. Dabei werden alle angeforderten Werte überschrieben. Verwenden Sie dazu das Feld baseline_values.

Mit den Werten baseline_values eines CA-Pools können Sie die folgenden Eigenschaften angeben:

Sie können diese Optionen auch kombinieren.

Wenn Sie einen Teil des Felds baseline_values aktualisieren, werden alle Werte im Feld baseline_values durch die Aktualisierung ersetzt.

  • Beispiel: Eine Zertifizierungsstelle so einschränken, dass sie nur Endentitätszertifikate mit X.509-Werten für die gegenseitige TLS-Authentifizierung (mTLS) ausstellt.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • Beispiel: Eine Zertifizierungsstelle darauf beschränken, nur Code Signing-Zertifikate für Endentitäten mit einer Baseline-AIA-OCSP-URL auszustellen.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
        extendedKeyUsage:
          codeSigning: true
      aiaOcspServers:
        -   "http://foo.bar/revocation"
      additionalExtensions:
      -   objectId:
            objectIdPath:
              -   1
              -   2
              -   3
          critical: false
          value: "base64 encoded extension value"
    

Weitere Informationen zum Zertifikatsprofil für die mTLS-Endentität finden Sie unter mTLS für Endentitäten.

Zulässige Identitätsfelder einschränken

Wenn Sie die Identität von über einen CA-Pool ausgestellten Zertifikaten einschränken möchten, können Sie dem Feld identity_constraints der Ausstellrichtlinie einen [Common Expression Language (CEL)][4]{: .external}-Ausdruck hinzufügen. Mit CEL-Ausdrücken können beliebige Einschränkungen für den Domainnamen des Antragstellers (einschließlich des gemeinsamen Namens) und die SANs eines Zertifikats festgelegt werden.

Weitere Informationen zur Verwendung eines CEL-Ausdrucks zum Einschränken von Subject und SANs finden Sie unter CEL verwenden.

  • Beispiel: Die Zertifizierungsstelle darf nur Zertifikate ausstellen, die mit einem bestimmten Subjekt übereinstimmen.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: false
      celExpression:
        expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
    

    Das Feld celExpression ist optional. Verwenden Sie einen CEL-Ausdruck (Common Expression Language), um den aufgelösten X.509-Inhaber und den SAN zu validieren, bevor ein Zertifikat signiert wird. Weitere Informationen zur Verwendung von CEL-Ausdrücken finden Sie unter CEL verwenden.

  • Beispiel: Nur SANs mit DNS-Namen wie us.google.org oder auf .google.com endend zulassen.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
    
  • Beispiel: Nur SANs mit den URIs https://google.com/webhp oder mit spiffe://example-trust-domain-1/ns/namespace1/sa/ beginnend zulassen.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
    
  • Beispiel: Nur SANs mit E-Mail-Adressen example@google.com oder die auf @google.org enden zulassen.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
    
  • Beispiel: Nur benutzerdefinierte SANs mit einer bestimmten OID und einem benutzerdefinierten Wert zulassen.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
    

Maximale Lebensdauer der ausgestellten Zertifikate einschränken

Verwenden Sie das Feld maximum_lifetime, um die Lebensdauer der ausgestellten Zertifikate einzuschränken. Wenn die angeforderte Lebensdauer eines Zertifikats länger als die maximale Lebensdauer ist, wird die Lebensdauer des Zertifikats explizit abgeschnitten.

Beispiel

Wenn Sie eine maximale Lebensdauer von 30 Tagen zulassen möchten, verwenden Sie die folgende policy.yaml-Datei:

policy.yaml

maximumLifetime: 2592000s

Zulässige Zertifikatsausstellungsmodi einschränken

Sie können ein Zertifikat entweder über eine Anfrage zur Zertifikatssignierung (Certificate Signing Request, CSR) oder über eine Inline-Beschreibung der angeforderten Werte anfordern. Einige Organisationen bevorzugen es möglicherweise, Einschränkungen für die Option festzulegen, die verwendet werden kann, da für die letztere Methode kein Nachweis des Besitzes des zugehörigen privaten Schlüssels erforderlich ist. Sie können diese Einschränkungen mit dem Feld allowedIssuanceModes festlegen.

Weitere Informationen zum Angeben der Möglichkeiten, wie Zertifikate bei einem CA-Pool angefordert werden können, finden Sie unter Ausstellungsmodi.

Weitere Informationen zum Anfordern von Zertifikaten finden Sie unter Zertifikatsanfrage erstellen.

  • Beispiel: Nur Ausstellung von CSR-Zertifikaten zulassen.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

Public-Key-Algorithmen der Zertifikatsanfrage einschränken

Wenn Sie die Mindestschlüssellänge und die öffentlichen Schlüsselalgorithmen einschränken möchten, die für Zertifikate verwendet werden können, können Sie das Feld allowedKeyTypes in der YAML-Datei der Richtlinie zur Zertifikatausstellung verwenden. Wenn dieses Feld angegeben ist, muss der öffentliche Schlüssel der Zertifikatsanfrage mit einem der in der YAML-Datei aufgeführten Schlüsseltypen übereinstimmen. Wenn dieses Feld nicht angegeben ist, können Sie jeden beliebigen Schlüssel verwenden, mit Ausnahme von RSA-Schlüsseln, deren Modulus kleiner als 2.048 Bit ist. Wenn Sie einen RSA-Schlüssel mit einer Modulusgröße von weniger als 2.048 Bit verwenden möchten, müssen Sie dies in der Richtlinie zur Zertifikatausstellung ausdrücklich zulassen.

Beispiel: RSA-Schlüssel mit einer Modulusgröße zwischen 3.072 Bit und 4.096 Bit (einschließlich) oder ECDSA-Schlüssel (Elliptic Curve Digital Signature Algorithm) über die NIST-P-256-Kurve zulassen.

policy.yaml

allowedKeyTypes:
-   rsa:
  minModulusSize: 3072
  maxModulusSize: 4096
-   ellipticCurve:
      signatureAlgorithm: ECDSA_P256

Sie können einen der folgenden Algorithmen für elliptische-Kurven-Signaturen auswählen:

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED – Es kann jeder Signaturalgorithmus verwendet werden.
  • ECDSA_P256 – Elliptische-Kurven-Digitalsignatur über die NIST-P-256-Kurve.
  • ECDSA_P384 – Elliptische-Kurven-Digitalsignatur über die NIST-P-384-Kurve.
  • EDDSA_25519 – Edwards-Kurven-Digital Signature Algorithm über die Kurve 25519, wie in RFC 8410 beschrieben.

Nächste Schritte