Mettre en forme les certificats pour GKE Identity Service
Ce document explique comment mettre en forme les certificats lors de la configuration de GKE Identity Service. Ces conseils peuvent vous aider à éviter et à résoudre les problèmes liés aux certificats du fournisseur d'identité lors de l'utilisation du service.
Présentation
GKE Identity Service est un service d'authentification qui vous permet de vous connecter à votre clusters GKE via des fournisseurs d'identité tels qu'OIDC et LDAP. Lors de l'établissement d'une connexion TLS, GKE Identity Service valide le certificat de serveur du fournisseur et vérifie si le issuer
du certificat du fournisseur est l'un des certificats d'autorité de certification (CA) configurés.
Chaîne certificateAuthorityData
dans ClientConfig
Le certificat CA utilisé pour vérifier l'identité du fournisseur est configuré dans le champ certificateAuthorityData
du ClientConfig, comme illustré dans les exemples suivants.
Exemple pour LDAP
... ldap: host: HOST_NAME certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA connectionType: CONNECTION_TYPE ...
où CERTIFICATE_AUTHORITY_DATA contient un certificat CA encodé en base64 au format PEM pour le serveur LDAP. Incluez la chaîne obtenue dans certificateAuthorityData
en tant que ligne unique. Ces éléments ne doivent être fournis que pour les connexions ldaps
et startTLS
.
Exemple pour OIDC
... oidc: certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA ...
où CERTIFICATE_AUTHORITY_DATA contient une chaîne de certificat encodée en base64 au format PEM pour le fournisseur d'identité. Incluez la chaîne obtenue dans certificateAuthorityData
en tant que ligne unique.
Valeur du certificat encodé en base64
Défini dans le document RFC 4864, l'encodage en base64 standard utilise les caractères A
à Z
, a
à z
, 0
à 9
, +
et /
.
Les données sont remplies à l'aide de =
.
Encoder le certificat CA pour GKE Identity Service
Les certificats SSL utilisent des formats tels que DER, PEM et PFX. Les fichiers PFX sont généralement chiffrés à l'aide d'un mot de passe.
Lorsque vous configurez GKE Identity Service avec un fournisseur d'identité, les certificats ne doivent pas être protégés par un mot de passe. Ceci est dû au fait qu'il n'existe aucun workflow disponible permettant de spécifier le mot de passe pour le déchiffrement. Par conséquent, veillez à convertir vos certificats utilisant d'autres formats en fichiers encodés au format PEM à l'aide de l'outil de ligne de commande openssl
sur n'importe quel système Linux ou Unix.
S'il existe plusieurs certificats, concaténez-les et importez-les dans un seul fichier PEM.
Exemple de format PEM
Voici un exemple de certificat encodé au format PEM :
-----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-----
Notez les détails suivants dans l'exemple :
- Les délimiteurs de certificats commencent par BEGIN CERTIFICATE et se terminent par END CERTIFICATE.
- Le nombre de traits d'union utilisés dans les délimiteurs est fixe.
- La valeur du certificat utilise l'encodage en base64 standard (RFC 4864) avec des sauts de ligne (après 64 caractères).
- Les sauts de ligne (\n) ne sont pas visibles. N'échappez pas le caractère de nouvelle ligne.
Spécifier la valeur du certificat dans ClientConfig
Pour spécifier la valeur du certificat dans votre ClientConfig, procédez comme suit :
- Déterminez le format encodé en PEM pour le certificat CA.
- Encodez le fichier PEM en base64 conformément à la RFC 4864.
Assurez-vous que la sortie est une longue chaîne sans saut de ligne, comme dans l'exemple suivant de fichier PEM encodé en base64 :
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNNekNDQVp5Z0F3SUJBZ0lKQUxpUG5Wc3ZxOGRzTUEwR0NTcUdTSWIzRFFFQkJRVUFNRk14Q3pBSkJnTlYKQkFZVEFsVlRNUXd3Q2dZRFZRUUlFd05tYjI4eEREQUtCZ05WQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dgpNUXd3Q2dZRFZRUUxFd05tYjI4eEREQUtCZ05WQkFNVEEyWnZiekFlRncweE16QXpNVGt4TlRRd01UbGFGdzB4Ck9EQXpNVGd4TlRRd01UbGFNRk14Q3pBSkJnTlZCQVlUQWxWVE1Rd3dDZ1lEVlFRSUV3Tm1iMjh4RERBS0JnTlYKQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dk1Rd3dDZ1lEVlFRTEV3Tm1iMjh4RERBS0JnTlZCQU1UQTJadgpiekNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBemRHZnhpOUNOYk1mMVVVY3ZEUWg3TVlCCk92ZUlIeWMwRTBLSWJoaks1RmtDQlU0Q2lacmJmSGFnYVc3WkVjTjB0dDNFdnBiT014eGMvWlFVMldOL3Mvd1AKeHBoMHBTZnNmRnNUS000UmhUV0QydjRmZ2sreFppS2QxcDArTDRoVHRwd25FdzB1WFJWZDBraTZtdXdWNXkvUAorNUZIVWVsZHErcGdUY2d6dUs4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnTGtNQTBHQ1NxR1NJYjNEUUVCCkJRVUFBNEdCQUppREFBdFkwbVFRZXV4V2R6TFJ6WG1qdmRTdUw5R295VDNCRi9qU25weHo1LzU4ZGJhOHBXZW4KdjNwajRQM3c1RG9Pc28wcnprWnkyakVzRWl0bFZNMm1MU2JRcE1NK01VVlFDUW9pRzZXOXh1Q0Z1eFNyd1BJUwpwQXFFQXVWNEROb3hRS0tXbWhWditKMHB0TVdEMjVQbnB4ZXE1c1h6Z2hmSm5zbEpsUU5ECi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
- Indiquez cette valeur de certificat pour le champ
certificateAuthorityData
dans ClientConfig.
Certificats CA pour les certificats intermédiaires
Un certificat intermédiaire joue un rôle de "chaîne de confiance" entre un certificat d'entité finale et un certificat racine. Cette valeur de certificat doit être mise en forme en tant que chaîne encodée en base64 lorsqu'elle est utilisée dans ClientConfig. Pour créer une seule chaîne, concaténez tous les certificats encodés au format PEM en une seule chaîne, puis encodez-la en base64.
Voici un exemple de chaîne de confiance contiguë commençant par le certificat racine.
ServerCert -> IntermediateCA -> DeptCA -> RootCA
Dans cet exemple, ServerCert
est émis par IntermediateCA
, qui est émis par DeptCA
, qui à son tour est émis par RootCA
.
Les chaînes de confiance partielles sont acceptées par GKE Identity Service. Cela signifie que vous ne pouvez fournir des chaînes qu'avec certains certificats, tels que :
IntermediateCA -> DeptCA -> RootCA
IntermediateCA -> DeptCA
ServerCert
Lorsque GKE Identity Service n'est configuré qu'avec une chaîne partielle, il vérifie l'identité du serveur en essayant de faire correspondre les certificats de la chaîne partielle avec l'identité présentée par le serveur.
Les versions antérieures de GKE Identity Service, telles que les versions antérieures à Google Distributed Cloud version 1.28.200, nécessitent une chaîne de confiance contiguë commençant par le certificat racine pour valider le serveur. Exemples de chaînes partielles compatibles avec les versions antérieures de GKE Identity Service :
ServerCert -> IntermediateCA -> DeptCA -> RootCA
IntermediateCA -> DeptCA -> RootCA
DeptCA -> RootCA
Si vous rencontrez des problèmes de validation de certificat et que vous ne savez pas quelle version de GKE Identity Service vous utilisez, essayez d'ajouter un certificat racine à votre chaîne de confiance si vous n'en avez pas pour voir si c'est la cause du problème.
Spécifier la chaîne de confiance des certificats dans ClientConfig
Pour spécifier la chaîne de confiance des certificats dans votre ClientConfig, procédez comme suit :
- Déterminez le format encodé en PEM pour les certificats CA que vous souhaitez inclure dans la chaîne de certificats.
Concaténez les fichiers PEM en un seul fichier de sorte que le certificat racine se trouve à la fin du fichier. Voici à quoi ressemble la sortie :
-----BEGIN CERTIFICATE----- IntermediateCA -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- DeptCA -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- RootCA certificate -----END CERTIFICATE-----
Encodez le fichier concaténé en base64. Assurez-vous que le fichier contient une seule ligne de texte encodé en base64.
Indiquez cette valeur de certificat pour le champ
certificateAuthorityData
dans ClientConfig.