¿Cómo puedo solucionar el error «InvalidIdentityToken» cuando uso el rol de IAM de Amazon EKS para acceder a la cuenta de servicio?
La huella digital de mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS) ha cambiado y ha provocado que el controlador del equilibrador de carga de aplicación no se actualice. O bien, mis pods de Amazon EKS tienen el estado de Error «InvalidIdentityToken».
Resolución
Las cuentas de servicio de Amazon EKS utilizan OpenID Connect (OIDC) para autenticarse. Cuando crea un proveedor de identidades (IdP) OIDC de AWS Identity and Access Management (IAM) para su clúster de Amazon EKS, la huella digital que se genera utiliza el certificado raíz. La autoridad de certificación (CA) raíz de Amazon tiene un periodo de validación de aproximadamente 25 años.
El error «WebIdentityErr: failed to retrieve credentials\r\ncaused by: InvalidIdentityToken: OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint\r\n» se muestra en los siguientes casos:
- La huella digital que se utiliza en el proveedor OIDC ha caducado.
- La huella digital no coincide con la de la CA.
Para solucionar este problema y obtener una huella digital, instale y configure la herramienta de línea de comandos de OpenSSL.
Cómo buscar la URL del IdP de OIDC
Para buscar la URL del IdP de OIDC, siga estos pasos:
-
Abra la consola de Amazon EKS.
-
En el panel de navegación, seleccione Clústeres.
-
Seleccione el clúster que desee comprobar.
-
Seleccione la pestaña Configuración.
-
En la sección Detalles, anote la URL del IdP de OICD.
Ejemplo: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/Incluya /.well-known/openid-configuration al final de la URL del IdP de OICD para formar la URL del documento de configuración del IdP.
Ejemplo: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/.well-known/openid-configuration. Acceda a esta URL en un navegador web y anote el valor jwks_uri del resultado. El resultado del navegador web es similar al siguiente:
{"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"]}
Cómo mostrar los certificados
Utilice la herramienta de línea de comandos de OpenSSL para ejecutar el siguiente comando y mostrar todos los certificados que se utilizan:
Nota: Sustituya oidc.eks.us-east-2.amazonaws.com por el nombre de su dominio.
openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts
El resultado es similar al siguiente:
[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
Si ve más de un certificado en el resultado, busque el último certificado al final del resultado. El último certificado es la CA raíz de la cadena de entidades de certificación.
Creación de un archivo de certificado
Cree un archivo de certificado (por ejemplo: certificate.crt) y copie el contenido del último certificado en el archivo.
A continuación, ejecute el siguiente comando:
openssl x509 -in certificate.crt -text
El resultado es similar al siguiente:
[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
Compruebe la validez del certificado a partir de los valores de los campos No antes de y No posterior a. En el resultado anterior, la validez de la CA es de aproximadamente 25 años.
Sustitución de un certificado caducado
Si el resultado muestra que el certificado ha caducado, debe renovarlo con su IdP de OIDC.
Después de renovar el certificado, ejecute el siguiente comando con la herramienta de línea de comandos de OpenSSL para obtener la huella digital más reciente:
openssl x509 -in certificate.crt -fingerprint -noout
El resultado es similar al siguiente:
SHA1 Fingerprint=9E:99:A4:8A:99:60:B1:49:26:BB:7F:3B:02:E2:2D:A2:B0:AB:72:80
Elimine los dos puntos (:) de esta cadena para obtener la huella digital final:
9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
Ejecute el siguiente comando para obtener la huella digital más reciente:
$ openssl x509 -in certificate.crt -fingerprint -noout | sed s/://g
Actualización a la huella digital más reciente
Si la huella digital actual ha caducado, utilice la consola de IAM o la interfaz de la línea de comandos de AWS (AWS CLI) para sustituirla por la huella digital más reciente.
Consola de IAM
Para utilizar la consola de IAM, siga estos pasos:
- Abra la consola de IAM.
- En el panel de navegación, elija Proveedores de identidad.
- Elige el IdP que quiera actualizar.
- En la sección Huellas digitales, seleccione Administrar.
- Seleccione Añadir huella digital y, a continuación, introduzca el nuevo valor.
- Seleccione Guardar cambios.
AWS CLI
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Ejecute el comando update-open-id-connect-provider-thumbprint de la 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
Información relacionada
Crear un proveedor de identidad de IAM OpenID Connect (OIDC)
Contenido relevante
- OFICIAL DE AWSActualizada hace 9 meses
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 8 meses