In diesem Dokument wird erläutert, wie Sie Zertifikate formatieren, wenn Sie GKE Identity Service konfigurieren. Diese Anleitung soll Ihnen dabei helfen, Probleme mit Identitätsanbieterzertifikaten bei der Verwendung des Dienstes zu vermeiden und zu beheben.
Übersicht
GKE Identity Service ist ein Authentifizierungsdienst, mit dem Sie sich über Identitätsanbieter wie OIDC und LDAP in Ihrem GKE-Cluster anmelden können. Beim Herstellen einer TLS-Verbindung validiert GKE Identity Service das Serverzertifikat des Anbieters und prüft, ob der issuer
des Zertifikats des Anbieters eines der konfigurierten CA-Zertifikate ist.
certificateAuthorityData
-String in ClientConfig
Das Zertifizierungsstellenzertifikat, mit dem die Identität des Anbieters überprüft wird, wird im Feld certificateAuthorityData
in der ClientConfig konfiguriert, wie in den folgenden Beispielen gezeigt.
Beispiel für LDAP
... ldap: host: HOST_NAME certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA connectionType: CONNECTION_TYPE ...
Dabei enthält CERTIFICATE_AUTHORITY_DATA ein base64-codiertes, PEM-formatiertes CA-Zertifikat für den LDAP-Server. Fügen Sie den resultierenden String in certificateAuthorityData
als eine einzelne Zeile ein. Dies muss nur für ldaps
- und startTLS
-Verbindungen angegeben werden.
Beispiel für OIDC
... oidc: certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA ...
Dabei enthält CERTIFICATE_AUTHORITY_DATA einen base64-codierten, PEM-formatierten Zertifikatstring für den Identitätsanbieter. Fügen Sie den resultierenden String in certificateAuthorityData
als eine einzelne Zeile ein.
Base64-codierter Zertifikatwert
In RFC 4864 definiert, verwendet die Standard-Base64-Codierung die Zeichen A
bis Z
, a
zu z
, 0
bis 9
, +
und /
.
Die Daten werden mit =
aufgefüllt.
CA-Zertifikat für GKE Identity Service codieren
SSL-Zertifikate haben Formate wie DER, PEM und PFX. PFX-Dateien sind in der Regel mit einem Passwort verschlüsselt.
Wenn Sie GKE Identity Service mit einem Identitätsanbieter konfigurieren, dürfen Zertifikate nicht passwortgeschützt sein. Das liegt daran, dass kein Workflow zum Angeben des Passworts für die Entschlüsselung verfügbar ist. Konvertieren Sie Ihre Zertifikate daher mit einem openssl
-Befehlszeilentool auf einem beliebigen Linux- oder Unix-System von anderen Formaten in PEM-codierte Dateien.
Wenn mehrere Zertifikate vorhanden sind, verketten Sie sie und importieren Sie sie als einzelne PEM-Datei.
Beispiel für das PEM-Format
Hier ein Beispiel für ein PEM-codiertes Zertifikat:
-----BEGIN CERTIFICATE----- MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P +5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND -----END CERTIFICATE-----
Beachten Sie im Beispiel Folgendes:
- Die Zertifikatstrennzeichen beginnen mit BEGIN CERTIFICATE und enden mit END CERTIFICATE.
- Die Anzahl der Bindestriche in den Trennzeichen ist festgelegt.
- Der Zertifikatswert verwendet die Standard-Base64-Codierung (RFC 4864) mit Zeilenumbrüchen (nach 64 Zeichen).
- Die Zeilenumbrüche (\n) sind nicht sichtbar. Verwenden Sie kein Maskierungszeichen für den Zeilenumbruch.
Zertifikatwert in ClientConfig angeben
So geben Sie den Zertifikatwert in Ihrer ClientConfig an:
- Ermitteln Sie das PEM-codierte Format für das CA-Zertifikat.
- Codieren Sie die PEM-Datei gemäß RFC 4864 mit base64.
Achten Sie darauf, dass die Ausgabe ein langer einzelner String ohne Zeilenumbrüche ist, wie im folgenden Beispiel einer base64-codierten PEM-Datei:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNNekNDQVp5Z0F3SUJBZ0lKQUxpUG5Wc3ZxOGRzTUEwR0NTcUdTSWIzRFFFQkJRVUFNRk14Q3pBSkJnTlYKQkFZVEFsVlRNUXd3Q2dZRFZRUUlFd05tYjI4eEREQUtCZ05WQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dgpNUXd3Q2dZRFZRUUxFd05tYjI4eEREQUtCZ05WQkFNVEEyWnZiekFlRncweE16QXpNVGt4TlRRd01UbGFGdzB4Ck9EQXpNVGd4TlRRd01UbGFNRk14Q3pBSkJnTlZCQVlUQWxWVE1Rd3dDZ1lEVlFRSUV3Tm1iMjh4RERBS0JnTlYKQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dk1Rd3dDZ1lEVlFRTEV3Tm1iMjh4RERBS0JnTlZCQU1UQTJadgpiekNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBemRHZnhpOUNOYk1mMVVVY3ZEUWg3TVlCCk92ZUlIeWMwRTBLSWJoaks1RmtDQlU0Q2lacmJmSGFnYVc3WkVjTjB0dDNFdnBiT014eGMvWlFVMldOL3Mvd1AKeHBoMHBTZnNmRnNUS000UmhUV0QydjRmZ2sreFppS2QxcDArTDRoVHRwd25FdzB1WFJWZDBraTZtdXdWNXkvUAorNUZIVWVsZHErcGdUY2d6dUs4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnTGtNQTBHQ1NxR1NJYjNEUUVCCkJRVUFBNEdCQUppREFBdFkwbVFRZXV4V2R6TFJ6WG1qdmRTdUw5R295VDNCRi9qU25weHo1LzU4ZGJhOHBXZW4KdjNwajRQM3c1RG9Pc28wcnprWnkyakVzRWl0bFZNMm1MU2JRcE1NK01VVlFDUW9pRzZXOXh1Q0Z1eFNyd1BJUwpwQXFFQXVWNEROb3hRS0tXbWhWditKMHB0TVdEMjVQbnB4ZXE1c1h6Z2hmSm5zbEpsUU5ECi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
- Geben Sie diesen Zertifikatwert für das Feld
certificateAuthorityData
in der ClientConfig an.
CA-Zertifikate für Zwischenzertifikate
Ein Zwischenzertifikat spielt eine Rolle in der "Vertrauenskette" zwischen einem Endentitätszertifikat und einem Root-Zertifikat. Dieser Zertifikatwert sollte als Base64-codierter String formatiert werden, wenn er in der ClientConfig verwendet wird. Um einen einzelnen String zu erstellen, verketten Sie die vollständigen PEM-codierten Zertifikate zu einem einzelnen String und codieren Sie ihn dann in Base64.
Hier ist ein Beispiel für eine zusammenhängende Vertrauenskette, die mit dem Root-Zertifikat beginnt.
ServerCert -> IntermediateCA -> DeptCA -> RootCA
In diesem Beispiel wird ServerCert
von IntermediateCA
ausgestellt, das von DeptCA
ausgestellt wird, welches wiederum von RootCA
ausgestellt wird.
Teilweise Vertrauensketten werden von GKE Identity Service unterstützt. Das bedeutet, dass Sie Ketten mit nur einigen der Zertifikate angeben können, z. B.:
IntermediateCA -> DeptCA -> RootCA
IntermediateCA -> DeptCA
ServerCert
Wenn GKE Identity Service nur mit einer teilweisen Kette konfiguriert ist, wird es die Identität des Servers überprüfen, indem es versucht, die Zertifikate in der teilweisen Kette mit der vom Server bereitgestellten Identität abzugleichen.
Frühere Versionen von GKE Identity Service, z. B. Versionen vor Google Distributed Cloud 1.28.200, erfordern eine zusammenhängende Vertrauenskette, die ab dem Root-Zertifikat beginnt, um den Server zu verifizieren. Beispiele für teilweise Ketten, die von früheren Versionen von GKE Identity Service unterstützt werden:
ServerCert -> IntermediateCA -> DeptCA -> RootCA
IntermediateCA -> DeptCA -> RootCA
DeptCA -> RootCA
Wenn Sie Probleme bei der Zertifikatsüberprüfung haben und nicht wissen, welche Version von GKE Identity Service Sie verwenden, versuchen Sie, ein Root-Zertifikat in Ihre Vertrauenskette aufzunehmen, falls Sie noch keines haben, um zu sehen, ob dies die Ursache des Problems ist.
Zertifikats-Vertrauenskette in ClientConfig angeben
So geben Sie die Zertifikats-Vertrauenskette in Ihrer ClientConfig an:
- Bestimmen Sie das PEM-codierte Format für die CA-Zertifikate, die Sie in die Zertifikatskette aufnehmen möchten.
Verketten Sie die PEM-Dateien zu einer einzelnen Datei, sodass sich das Root-Zertifikat am Ende der Datei befindet. Die Ausgabe sieht so aus:
-----BEGIN CERTIFICATE----- IntermediateCA -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- DeptCA -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- RootCA certificate -----END CERTIFICATE-----
Codieren Sie die verkettete Datei mit base64. Die Datei muss eine einzelne Zeile mit base64-codiertem Text enthalten.
Geben Sie diesen Zertifikatwert für das Feld
certificateAuthorityData
in der ClientConfig an.