Richtlinien für die Zertifikatsausstellung hinzufügen

Wenn Sie Richtlinien für die Zertifikatausstellung in CA Service hinzufügen, definieren Sie Regeln und Einschränkungen für die Arten von Zertifikaten, die von einer Zertifizierungsstelle (Certificate Authority, CA) ausgestellt werden. Weitere Informationen zu Zertifikatsausstellungsrichtlinien finden Sie unter Zertifikatsausstellungsrichtlinien.

Mit einer Richtlinie für die Zertifikatsausstellung können Sie den Antragsteller und die alternativen Antragstellernamen (Subject Alternative Names, SANs) angeben, die in den ausgestellten Zertifikaten enthalten sein dürfen. 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 Übersicht über Vorlagen und Ausstellungsrichtlinien.

Hinweise

  • Sie benötigen die IAM-Rolle „Operation Manager für CA Service“ (roles/privateca.caManager) oder „CA Service-Administrator“ (roles/privateca.admin). Informationen zum Zuweisen einer IAM-Rolle zu einem Prinzipal 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 derGoogle 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, dem Sie eine Richtlinie zur Zertifikatausstellung 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, 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 aus den 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 genauere und präzisere Einschränkungen für die Verwendung des Schlüssels, z. B. für die Serverauthentifizierung, die 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 eine der aufgeführten 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. 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.

So fügen Sie die OCSP-Server hinzu, die im AIA-Erweiterungsfeld 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. CA-Optionen legen fest, 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, 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 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, ist das Zertifikat ein End-Entity-Zertifikat und kann keine anderen Zertifikate signieren. 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, mit denen gesteuert wird, wie lang eine Kette von Zertifikaten sein darf, die von einem bestimmten Zertifikat ausgeht. Wenn die maximale Ausstellerpfadlänge auf 0 festgelegt ist, kann die Zertifizierungsstelle nur Endentitätzertifikate ausstellen. Wenn sie auf 1 gesetzt ist, darf die Kette unter diesem CA-Zertifikat nur eine untergeordnete CA enthalten. Wenn ein Wert nicht deklariert 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 die vom CA-Pool ausgestellten Zertifikate aufgenommen werden sollen:

  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.

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

gcloud

Wenn Sie die Google Cloud CLI verwenden möchten, um einem CA-Pool eine Richtlinie zur Zertifikatausstellung hinzuzufügen, 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 gesetzt ist, wird das Feld „Antragsteller“ aus einer Zertifikatsanfrage in das signierte Zertifikat kopiert. Andernfalls wird das angeforderte Thema verworfen.
    • Wenn das Feld allowSubjectAltNamesPassthrough auf true gesetzt ist, wird die Erweiterung „SubjectAltNames“ 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 Zertifikatausstellung 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: der Pfad der Datei policy.yaml.

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

Unterstützte Einschränkungen

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

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

Mit einem CA-Pool können die zulässigen X.509-Werte in Zertifikatsanfragen eingeschränkt werden, indem das Feld passthrough_extensions konfiguriert wird.

In einem CA-Pool können auch explizit X.509-Werte angegeben werden, die allen ausgestellten Zertifikaten hinzugefügt werden sollen. Dabei werden alle angeforderten Werte mit dem Feld baseline_values überschrieben.

Mit den baseline_values-Werten eines CA-Pools können die folgenden Eigenschaften angegeben werden:

Sie können diese Optionen auch zusammen verwenden.

Wenn Sie einen Teil des Felds baseline_values aktualisieren, wird die gesamte Gruppe von Werten im Feld baseline_values durch die Aktualisierung ersetzt.

  • Beispiel: Beschränken Sie eine Zertifizierungsstelle so, dass sie nur Endentitätszertifikate mit X.509-Werten für gegenseitiges TLS (mTLS) ausstellen kann.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • Beispiel: Eine Zertifizierungsstelle so einschränken, dass sie nur Code-Signaturzertifikate für Endentitäten mit einer AIA-OCSP-URL ausstellt.

    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 Zertifikatprofil für die mTLS-Authentifizierung von Endentitäten finden Sie unter mTLS-Authentifizierung von Endentitäten.

Zulässige Identitätsfelder einschränken

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

Weitere Informationen zum Einschränken von Betreff und SANs mit einem CEL-Ausdruck finden Sie unter CEL verwenden.

  • Beispiel: Die Zertifizierungsstelle darf nur Zertifikate ausstellen, die einem bestimmten Betreff entsprechen.

    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 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 mit der Endung .google.com 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: Es sind nur SANs mit URIs https://google.com/webhp oder URIs, die mit spiffe://example-trust-domain-1/ns/namespace1/sa/ beginnen, zulässig.

    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: Es sollen nur SANs mit E-Mail-Adressen example@google.com oder mit der Endung @google.org zugelassen werden.

    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" )'
    

Dauer der Rückdatierung der ausgestellten Zertifikate einschränken

Wenn Sie für ausgestellte Zertifikate eine not_before_time in der Vergangenheit festlegen möchten, verwenden Sie das Feld backdate_duration. Wenn konfiguriert, haben Zertifikate aus diesem CA-Pool eine not_before_time, die der Ausstellungszeit minus der angegebenen Dauer entspricht. Der Wert not_after_time wird angepasst, um die angeforderte Zertifikatslaufzeit beizubehalten. Die backdate_duration muss kleiner oder gleich 48 Stunden sein.

Beispiel

Wenn Sie Zertifikate um eine Stunde zurückdatieren möchten, verwenden Sie die folgende policy.yaml-Datei:

policy.yaml

backdateDuration: 3600s

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 verkürzt.

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 eine Inline-Beschreibung der angeforderten Werte anfordern. Einige Organisationen ziehen es möglicherweise vor, die verwendbare Option einzuschränken, da für die zweite 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 Methoden, mit denen Zertifikate von einem CA-Pool angefordert werden können, finden Sie unter IssuanceModes.

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

  • Beispiel: Nur die Ausstellung von CSRs zulassen.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

Algorithmen für öffentliche Schlüssel der Zertifikatsanfrage einschränken

Wenn Sie die Mindestschlüssellänge und die Algorithmen für öffentliche Schlüssel einschränken möchten, die für Zertifikate verwendet werden können, können Sie das Feld allowedKeyTypes in der YAML-Datei der Richtlinie für die Zertifikatsausstellung 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 einen beliebigen Schlüssel verwenden, mit Ausnahme von RSA-Schlüsseln, deren Modulusgröße weniger als 2.048 Bit beträgt. Wenn Sie einen RSA-Schlüssel mit einer Modulusgröße von weniger als 2.048 Bit verwenden möchten, müssen Sie dies explizit über die Richtlinie zur Zertifikatausstellung 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 der NIST P-256-Kurve zulassen.

policy.yaml

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

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

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED: Es kann ein beliebiger Signaturalgorithmus verwendet werden.
  • ECDSA_P256 – Elliptic Curve Digital Signature Algorithm (ECDSA) über die NIST P-256-Kurve.
  • ECDSA_P384 – Elliptic Curve Digital Signature über die NIST-P-384-Kurve.
  • EDDSA_25519 – Edwards-curve Digital Signature Algorithm über Kurve 25519, wie in RFC 8410 beschrieben.

Nächste Schritte