Wie behebe ich den Fehler „invalidIdentityToken“, wenn ich die Amazon EKS-IAM-Rolle für den Zugriff auf das Dienstkonto verwende?
Der Fingerabdruck für meinen Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster änderte sich und führte dazu, dass Updates des Application Load Balancer-Controllers fehlschlugen. Oder meine Amazon EKS-Pods befinden sich im ausgefallenen Zustand mit dem Fehler „InvalidIdentityToken“.
Behebung
Amazon EKS-Dienstkonten verwenden OpenID Connect (OIDC) zur Authentifizierung. Wenn Sie einen OIDC-Identitätsanbieter (IAM) von AWS Identity and Access Management (IAM) für Ihren Amazon EKS-Cluster erstellen, verwendet der generierte Fingerabdruck das Stammzertifikat. Die Amazon Root Certificate Authority (CA) hat einen Validierungszeitraum von etwa 25 Jahren.
Sie erhalten den Fehler „WebIdentityErr: failed to retrieve credentials\r\ncaused by: InvalidIdentityToken: OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint\r\n“ in den folgenden Szenarien:
- Der Fingerabdruck, der im OIDC-Anbieter verwendet wird, ist abgelaufen.
- Der Fingerabdruck stimmt nicht mit der CA überein.
Um dieses Problem zu beheben und einen Fingerabdruck zu erhalten, installieren und konfigurieren Sie das OpenSSL-Befehlszeilentool.
Die URL für den OIDC-IdP finden
Gehen Sie wie folgt vor, um die URL für den OIDC-IdP zu finden:
-
Öffnen Sie die Amazon-EKS-Konsole.
-
Wählen Sie im Navigationsbereich die Option Cluster aus.
-
Wählen Sie den Cluster aus, den Sie prüfen möchten.
-
Wählen Sie die Registerkarte Konfiguration aus.
-
Notieren Sie sich im Abschnitt Details die OICD-IdP-URL.
Beispiel: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/Fügen Sie /.well-known/openid-configuration am Ende der OICD-IdP-URL ein, um die URL für das Konfigurationsdokument des IdP zu bilden.
Beispiel: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/.well-known/openid-configuration. Greifen Sie in einem Webbrowser auf diese URL zu und notieren Sie sich den jwks_uri-Wert aus der Ausgabe. Die Ausgabe sieht etwa wie folgt aus:
{"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"]}
Zertifikate anzeigen
Verwenden Sie das OpenSSL-Befehlszeilentool, um den folgenden Befehl auszuführen, um alle verwendeten Zertifikate anzuzeigen:
Hinweis: Ersetzen Sie oidc.eks.us-east-2.amazonaws.com durch Ihren Domainnamen.
openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts
Die Ausgabe sieht etwa wie folgt aus:
[root@ip-172-31-1-202 ~]# openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcertsCONNECTED(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
Wenn Sie in der Ausgabe mehr als ein Zertifikat sehen, suchen Sie am Ende der Ausgabe nach dem letzten Zertifikat. Das letzte Zertifikat ist die Stammzertifizierungsstelle in der Zertifizierungsstellenkette.
Eine Zertifikatsdatei erstellen
Erstellen Sie eine Zertifikatsdatei (Beispiel: certificate.crt) und kopieren Sie den Inhalt des letzten Zertifikats in die Datei.
Führen Sie dann den folgenden Befehl aus:
openssl x509 -in certificate.crt -text
Die Ausgabe sieht etwa wie folgt aus:
[root@ip-172-31-1-202 ~]# openssl x509 -in certificate.crt -textCertificate: 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
Überprüfen Sie die Gültigkeit des Zertifikats anhand der Werte in den Feldern Nicht vorher und Nicht danach. In der vorherigen Ausgabe beträgt die Gültigkeit der CA ungefähr 25 Jahre.
Ein abgelaufenes Zertifikat ersetzen
Wenn die Ausgabe zeigt, dass das Zertifikat abgelaufen ist, müssen Sie das Zertifikat mit Ihrem OIDC-IdP erneuern.
Nachdem Sie das Zertifikat erneuert haben, führen Sie den folgenden Befehl mit dem OpenSSL-Befehlszeilentool aus, um den neuesten Fingerabdruck abzurufen:
openssl x509 -in certificate.crt -fingerprint -noout
Die Ausgabe sieht etwa wie folgt aus:
SHA1 Fingerprint=9E:99:A4:8A:99:60:B1:49:26:BB:7F:3B:02:E2:2D:A2:B0:AB:72:80
Lösche die Doppelpunkte (:) aus dieser Zeichenfolge, um den endgültigen Fingerabdruck zu erhalten:
9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
Führen Sie den folgenden Befehl aus, um den neuesten Fingerabdruck abzurufen:
$ openssl x509 -in certificate.crt -fingerprint -noout | sed s/://g
Auf den neuesten Fingerabdruck aktualisieren
Wenn der aktuelle Fingerabdruck abgelaufen ist, verwenden Sie die IAM-Konsole oder das AWS Command Line Interface (AWS CLI), um ihn durch den neuesten Fingerabdruck zu ersetzen.
IAM-Konsole
Gehen Sie wie folgt vor, um die IAM-Konsole zu verwenden:
- Öffnen Sie die IAM-Konsole.
- Wählen Sie im Navigationsbereich Identitätsanbieter aus.
- Wählen Sie den IdP aus, den Sie aktualisieren möchten.
- Wähle im Abschnitt Fingerabdrücke die Option Verwalten.
- Wählen Sie Fingerabdruck hinzufügen aus und geben Sie dann den neuen Wert ein.
- Wählen Sie Änderungen speichern aus.
AWS CLI
**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Führen Sie den AWS-CLI-Befehl update-open-id-connect-provider-thumbprint aus:
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
Ähnliche Informationen
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren