Wie kann ich den Fehler "InvalidIdentityToken - Das HTTPS-Zertifikat des OpenIDConnect-Anbieters stimmt nicht mit dem konfigurierten Fingerabdruck überein" beheben, wenn ich die Amazon EKS IAM-Rolle für den Zugriff auf das Servicekonto verwende?
Der Fingerabdruck für meinen Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster hat sich geändert, was dazu führt, dass der Application Load Balancer-Controller keine Updates mehr durchführen kann. -oder- Meine Amazon EKS-Pods befinden sich in einem fehlgeschlagenen Zustand mit dem folgenden Fehler: "WebIdentityErr: Abruf der Anmeldeinformationen fehlgeschlagen,\r\nverursacht durch: InvalidIdentityToken: Das HTTPS-Zertifikat des OpenIDConnect-Anbieters stimmt nicht mit dem konfigurierten Fingerabdruck überein\r\n".
Auflösung
Alle Amazon EKS Servicekonten verwenden OpenID Connect (OIDC) zur Authentifizierung. Wenn Sie einen AWS Identity and Access Management (IAM) OIDC-Anbieter für Ihren Amazon EKS-Cluster erstellen, verwendet der erzeugte Fingerabdruck das Stammzertifikat. Die Amazon Stammzertifizierungsstelle (CA) hat eine Gültigkeitsdauer von etwa 25 Jahren. Sie erhalten die Fehlermeldung "HTTPS-Zertifikat stimmt nicht mit dem konfigurierten Fingerabdruck überein" unter einer der folgenden Bedingungen:
- Der im OIDC-Anbieter verwendete Fingerabdruck ist abgelaufen.
- Der Fingerabdruck stimmt nicht mit der Stammzertifizierungsstelle überein.
Um dieses Problem zu beheben und einen Fingerabdruck zu erhalten, müssen Sie das OpenSSL-Befehlszeilen-Tool installieren und konfigurieren.
Um einen Fingerabdruck für den OIDC-Anbieter zu erhalten, gehen Sie wie folgt vor:
1. Gehen Sie wie folgt vor, um die URL für den OIDC-Identitätsanbieter (IdP) zu finden:
- Öffnen Sie die Amazon EKS-Konsole.
- Wählen Sie im Navigationsbereich Cluster.
- Wählen Sie den Cluster aus, den Sie prüfen möchten.
- Wählen Sie die Registerkarte Konfiguration.
- Notieren Sie sich die URL des OICD-Anbieters im Abschnitt Details.
Beispiel: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/
Fügen Sie /.well-known/openid-configuration am Ende der OICD-Anbieter-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
Rufen Sie diese URL in einem Webbrowser auf und notieren Sie sich den jwks_uri-Wert von der Ausgabe. Die Browserausgabe sieht ähnlich aus wie die folgende:
{"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. Verwenden Sie das OpenSSL-Befehlszeilen-Tool und führen Sie den folgenden Befehl aus, um alle verwendeten Zertifikate anzuzeigen:
Hinweis: Ersetzen Sie oidc.eks.us-east-2.amazonaws.com durch den in Schritt 1 angegebenen Domänennamen.
openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts
Die Ausgabe sieht ähnlich aus wie die folgende:
[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 ---
Wenn Sie mehr als ein Zertifikat in der Ausgabe sehen, suchen Sie das letzte Zertifikat, das am Ende der Ausgabe angezeigt wird. Das letzte Zertifikat ist die Stammzertifizierungsstelle in der Kette der Zertifizierungsstellen.
3. Erstellen Sie eine Zertifikatsdatei (Beispiel: certificate.crt), und kopieren Sie den Inhalt des letzten Zertifikats in diese Datei. Führen Sie dann den folgenden Befehl aus:
openssl x509 -in certificate.crt -text
Die Ausgabe sieht ähnlich aus wie die folgende:
[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
Sie können die Gültigkeit des Zertifikats anhand der Werte in den Feldern Nicht vor und Nicht nach überprüfen. Aus der Ausgabe können Sie ersehen, dass die Gültigkeit der Amazon Stammzertifizierungsstelle etwa 25 Jahre beträgt.
4. Wenn die Ausgabe anzeigt, dass das Zertifikat abgelaufen ist, müssen Sie das Zertifikat bei Ihrem OIDC-Anbieter erneuern. Nachdem Sie das Zertifikat erneuert haben, führen Sie den folgenden Befehl mit dem OpenSSL-Befehlszeilen-Tool aus, um den neuesten Fingerabdruck zu erhalten:
openssl x509 -in certificate.crt -fingerprint -noout
Die Ausgabe sieht ähnlich aus wie die folgende:
SHA1 Fingerprint=9E:99:A4:8A:99:60:B1:49:26:BB:7F:3B:02:E2:2D:A2:B0:AB:72:80
Löschen Sie die Doppelpunkte (:) aus dieser Zeichenfolge, um den endgültigen Fingerabdruck zu erhalten:
9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
-oder-
Führen Sie den folgenden Befehl aus, um den letzten Fingerabdruck zu erhalten, nachdem Sie die Semikolons ausgeschlossen haben:
$ openssl x509 -in certificate.crt -fingerprint -noout | sed s/://g
5. Wenn der aktuelle Fingerabdruck abgelaufen ist, verwenden Sie den neuesten Fingerabdruck aus Schritt 4, um ihn zu ersetzen. Sie können dies über die IAM-Konsole oder über das AWS Command Line Interface (AWS CLI). tun.
Um den Fingerabdruck über die Konsole zu ersetzen, gehen Sie wie folgt vor:
- Öffnen Sie die IAM-Konsole.
- Wählen Sie im Navigationsbereich die Option Identitätsanbieter.
- Wählen Sie den Identitätsanbieter, den Sie aktualisieren möchten.
- Wählen Sie im Abschnitt Fingerabdrücke die Option Verwalten.
- Wählen Sie Fingerabdruck hinzufügen und geben Sie den neuen Wert ein.
- Wählen Sie Änderungen speichern.
-oder-
Führen Sie einen Befehl ähnlich dem folgenden über die AWS CLI 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
Hinweis: Wenn Sie beim Ausführen von AWS CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.
Ähnliche Informationen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren