Comment résoudre l'erreur « InvalidIdentityToken – Le certificat HTTPS du fournisseur OpenIDConnect ne correspond pas à l'empreinte numérique configurée » lorsque j'utilise le rôle IAM Amazon EKS pour accéder au compte de service ?
L'empreinte numérique de mon cluster Amazon Elastic Kubernetes Service (Amazon EKS) a changé, ce qui a provoqué l'échec des mises à jour du contrôleur d'Application Load Balancer. -ou- Mes pods Amazon EKS sont en état d'échec avec l'erreur suivante : « WebIdentityErr: failed to retrieve credentials\r\ncaused by: InvalidIdentityToken: OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint\r\n ».
Solution
Tous les comptes de service Amazon EKS utilisent OpenID Connect (OIDC) pour s'authentifier. Lorsque vous créez un fournisseur OIDC AWS Identity and Access Management (IAM) pour votre cluster Amazon EKS, l'empreinte numérique générée utilise le certificat racine. L'autorité de certification (CA) racine Amazon dispose d'une période de validité d'environ 25 ans. L'erreur « Le certificat HTTPS ne correspond pas à l'empreinte numérique configurée » s'affiche dans l'une des situations suivantes :
- L'empreinte numérique utilisée dans le fournisseur OIDC a expiré.
- L'empreinte numérique ne correspond pas à l'autorité de certification.
Pour résoudre ce problème et obtenir une empreinte numérique, vous devez installer et configurer l'outil de ligne de commande OpenSSL.
Pour obtenir une empreinte numérique pour le fournisseur OIDC, procédez comme suit :
1. Recherchez l'URL du fournisseur d'identité (IdP) OIDC en procédant comme suit :
- Ouvrez la console Amazon EKS.
- Dans le panneau de navigation, choisissez Clusters (Clusters).
- Choisissez le cluster que vous souhaitez vérifier.
- Sélectionnez l'onglet Configuration (Configuration).
- Notez l'URL du fournisseur OICD dans la section Details (Détails).
Exemple : https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/
Incluez /.well-known/openid-configuration à la fin de l'URL du fournisseur OIDC pour définir l'URL du document de configuration de l'IdP.
Exemple : https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/.well-known/openid-configuration
Accédez à cette URL dans un navigateur web et notez la valeur jwks_uri de la sortie. Le résultat du navigateur doit être similaire au suivant :
{"issuer":"https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F","jwks_uri":"https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/keys","authorization_endpoint":"urn:kubernetes:programmatic_authorization","response_types_supported":["id_token"],"subject_types_supported":["public"],"claims_supported":["sub","iss"],"id_token_signing_alg_values_supported":["RS256"]}
2. Utilisez l'outil de ligne de commande OpenSSL pour exécuter la commande suivante afin d'afficher tous les certificats utilisés :
Remarque : veillez à remplacer oidc.eks.us-east-2.amazonaws.com par le nom de domaine renvoyé à l'étape 1.
openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts
Le résultat doit être similaire au suivant :
[root@ip-172-31-1-202 ~]# openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts CONNECTED(00000003) depth=4 C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority verify return:1 depth=3 C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Services Root Certificate Authority - G2 verify return:1 depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = *.execute-api.us-east-2.amazonaws.com verify return:1 --- Certificate chain 0 s:/CN=*.execute-api.us-east-2.amazonaws.com i:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon -----BEGIN CERTIFICATE----- CERTIFICATE Redacted -----END CERTIFICATE----- 1 s:/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon i:/C=US/O=Amazon/CN=Amazon Root CA 1 -----BEGIN CERTIFICATE----- CERTIFICATE Redacted -----END CERTIFICATE----- 2 s:/C=US/O=Amazon/CN=Amazon Root CA 1 i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2 -----BEGIN CERTIFICATE----- CERTIFICATE Redacted -----END CERTIFICATE----- 3 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./CN=Starfield Services Root Certificate Authority - G2 i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority -----BEGIN CERTIFICATE----- MIIEdTCCA12gAwIBAgIJAKcOSkw0grd/MA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNV BAYTAlVTMSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTIw MAYDVQQLEylTdGFyZmllbGQgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0wOTA5MDIwMDAwMDBaFw0zNDA2MjgxNzM5MTZaMIGYMQswCQYDVQQGEwJV UzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTElMCMGA1UE ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjE7MDkGA1UEAxMyU3RhcmZp ZWxkIFNlcnZpY2VzIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVDDrEKvlO4vW+GZdfjohTsR8/ y8+fIBNtKTrID30892t2OGPZNmCom15cAICyL1l/9of5JUOG52kbUpqQ4XHj2C0N Tm/2yEnZtvMaVq4rtnQU68/7JuMauh2WLmo7WJSJR1b/JaCTcFOD2oR0FMNnngRo Ot+OQFodSk7PQ5E751bWAHDLUu57fa4657wx+UX2wmDPE1kCK4DMNEffud6QZW0C zyyRpqbn3oUYSXxmTqM6bam17jQuug0DuDPfR+uxa40l2ZvOgdFFRjKWcIfeAg5J Q4W2bHO7ZOphQazJ1FTfhy/HIrImzJ9ZVGif/L4qL8RVHHVAYBeFAlU5i38FAgMB AAGjgfAwge0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0O BBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMB8GA1UdIwQYMBaAFL9ft9HO3R+G9FtV rNzXEMIOqYjnME8GCCsGAQUFBwEBBEMwQTAcBggrBgEFBQcwAYYQaHR0cDovL28u c3MyLnVzLzAhBggrBgEFBQcwAoYVaHR0cDovL3guc3MyLnVzL3guY2VyMCYGA1Ud HwQfMB0wG6AZoBeGFWh0dHA6Ly9zLnNzMi51cy9yLmNybDARBgNVHSAECjAIMAYG BFUdIAAwDQYJKoZIhvcNAQELBQADggEBACMd44pXyn3pF3lM8R5V/cxTbj5HD9/G VfKyBDbtgB9TxF00KGu+x1X8Z+rLP3+QsjPNG1gQggL4+C/1E2DUBc7xgQjB3ad1 l08YuW3e95ORCLp+QCztweq7dp4zBncdDQh/U90bZKuCJ/Fp1U1ervShw3WnWEQt 8jxwmKy6abaVd38PMV4s/KCHOkdp8Hlf9BRUpJVeEXgSYCfOn8J3/yNTd126/+pZ 59vPr5KW7ySaNRB6nJHGDn2Z9j8Z3/VyVOEVqQdZe4O/Ui5GjLIAZHYcSNPYeehu VsyuLAOQ1xk4meTKCRlb/weWsKh/NEnfVqn3sF/tM+2MR7cEXAMPLE= -----END CERTIFICATE----- --- Server certificate subject=/CN=*.execute-api.us-east-2.amazonaws.com issuer=/C=US/O=Amazon/OU=Server CA 1B/CN=Amazon ---
Si vous voyez plusieurs certificats dans la sortie, recherchez le dernier certificat affiché à la fin de la sortie. Le dernier certificat est l'autorité de certification racine de la chaîne d'autorité de certification.
3. Créez un fichier de certificat (exemple : certificate.crt) et copiez le contenu du dernier certificat dans ce fichier. Exécutez ensuite la commande suivante :
openssl x509 -in certificate.crt -text
Le résultat doit être similaire au suivant :
[root@ip-172-31-1-202 ~]# openssl x509 -in certificate.crt -text Certificate: Data: Version: 3 (0x2) Serial Number: a7:0e:4a:4c:34:82:b7:7f Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=Starfield Technologies, Inc., OU=Starfield Class 2 Certification Authority Validity Not Before: Sep 2 00:00:00 2009 GMT Not After : Jun 28 17:39:16 2034 GMT
Vous pouvez vérifier la validité du certificat à partir des valeurs des champs Not Before (Pas avant) et Not After (Pas après). La sortie indique que la validité de l'autorité de certification d'Amazon est d'environ 25 ans.
4. Si la sortie indique que le certificat a expiré, vous devez le renouveler auprès de votre fournisseur OIDC. Après avoir renouvelé le certificat, exécutez la commande suivante à l'aide de l'outil de ligne de commande OpenSSL pour obtenir la dernière empreinte numérique :
openssl x509 -in certificate.crt -fingerprint -noout
Le résultat doit être similaire au suivant :
SHA1 Fingerprint=9E:99:A4:8A:99:60:B1:49:26:BB:7F:3B:02:E2:2D:A2:B0:AB:72:80
Supprimez les deux-points (:) de cette chaîne pour obtenir l'empreinte numérique finale :
9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
-ou-
Exécutez la commande suivante pour obtenir la dernière empreinte numérique après avoir supprimé les points-virgules :
$ openssl x509 -in certificate.crt -fingerprint -noout | sed s/://g
5. Si l'empreinte numérique actuelle a expiré, utilisez la dernière empreinte numérique de l'étape 4 pour la remplacer. Vous pouvez effectuer cette action à partir de la console IAM ou à l'aide d'AWS Command Line Interface (AWS CLI).
Pour remplacer l'empreinte numérique via la console, procédez comme suit :
- Ouvrez la console IAM.
- Dans le panneau de navigation, choisissez Identity providers (Fournisseurs d'identité).
- Choisissez le fournisseur d'identité que vous souhaitez mettre à jour.
- Dans la section Empreintes numériques, choisissez Manage (Gérer).
- Choisissez Add thumbprint (Ajouter une empreinte numérique), puis saisissez la nouvelle valeur.
- Choisissez Save changes (Enregistrer les modifications).
-ou-
Exécutez une commande similaire à la suivante à l'aide de l'AWS CLI :
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/5ECB2797CB1324A37FC79E3C46851CED --thumbprint-list 9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
Remarque : si vous recevez des erreurs lors de l'exécution des commandes depuis AWS CLI, assurez-vous que vous utilisez la version AWS CLI la plus récente.
Informations connexes
Contenus pertinents
- demandé il y a un anlg...
- demandé il y a 9 moislg...
- demandé il y a 2 moislg...
- demandé il y a 10 moislg...
- demandé il y a 21 jourslg...
- AWS OFFICIELA mis à jour il y a 2 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans