AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Como soluciono o erro “InvalidIdentityToken” quando uso o perfil do IAM do Amazon EKS para acessar a conta de serviço?
A impressão digital do meu cluster Amazon Elastic Kubernetes Service (Amazon EKS) mudou e fez com que o controlador do Application Load Balancer falhasse nas atualizações. Ou meus pods do Amazon EKS estão em estado de falha com o erro “InvalidIdentityToken”.
Solução
As contas de serviço do Amazon EKS usam o OpenID Connect (OIDC) para se autenticar. Quando você cria um provedor de identidade OIDC (IdP) do AWS Identity and Access Management (IAM) para seu cluster Amazon EKS, a impressão digital gerada usa o certificado raiz. A Autoridade de Certificação (CA) raiz da Amazon tem um período de validação de aproximadamente 25 anos.
Você recebe a mensagem “WebIdentityErr: failed to retrieve credentials\r\ncaused by: Token de identidade inválido: OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint\r\n" error in the following scenarios:
- A impressão digital usada no provedor OIDC expirou.
- A impressão digital não corresponde à CA.
Para solucionar esse problema e obter uma impressão digital, instale e configure a ferramenta de linha de comando OpenSSL.
Encontre a URL para o OIDC IdP
Para encontrar a URL do OIDC IdP, conclua as seguintes etapas:
-
Abra o console do Amazon EKS.
-
No painel de navegação, escolha Clusters.
-
Selecione o cluster que você deseja verificar.
-
Escolha a guia Configuração.
-
Na seção Detalhes, observe o URL do IdP do OICD.
Exemplo: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/Inclua ** /.well-known/openid-configuration** no final da URL do IdP do OICD para formar a URL do documento de configuração do IdP.
Exemplo: ** https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/.well-known/openid-configuration. Acesse esse URL em um navegador da Web e anote o valor ** jwks\ _uri da saída. A saída do navegador é semelhante ao seguinte:
{"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"]}
Exibir certificados
Use a ferramenta de linha de comando OpenSSL para executar o seguinte comando para exibir todos os certificados usados:
**Observação:**Substitua oidc. eks.us-east-2.amazonaws.com pelo seu nome de domínio.
openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts
A saída é semelhante ao seguinte:
[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
Se você ver mais de um certificado na saída, procure o último certificado no final da saída. O último certificado é a CA raiz na cadeia de autoridades de certificação.
Crie um arquivo de certificado
Crie um arquivo de certificado (exemplo: certificate.crt) e copie o conteúdo do último certificado para o arquivo.
Em seguida, execute o seguinte comando:
openssl x509 -in certificate.crt -text
A saída é semelhante ao seguinte:
[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
Verifique a validade do certificado a partir dos valores nos campos Não antes e Não depois. Na produção anterior, a validade da CA é de aproximadamente 25 anos.
Substituir um certificado expirado
Se a saída mostrar que o certificado expirou, você deverá renovar o certificado com seu IdP do OIDC.
Depois de renovar o certificado, execute o seguinte comando com a ferramenta de linha de comando OpenSSL para obter a impressão digital mais recente:
openssl x509 -in certificate.crt -fingerprint -noout
A saída é semelhante ao seguinte:
SHA1 Fingerprint=9E:99:A4:8A:99:60:B1:49:26:BB:7F:3B:02:E2:2D:A2:B0:AB:72:80
Exclua os dois pontos (:) dessa string para obter a impressão digital final:
9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
Execute o comando a seguir para obter a impressão digital mais recente:
$ openssl x509 -in certificate.crt -fingerprint -noout | sed s/://g
Atualize para a impressão digital mais recente
Se a impressão digital atual expirar, use o console do IAM ou a AWS Command Line Interface (AWS CLI) para substituí-la pela impressão digital mais recente.
Console do IAM
Para usar o console do IAM, conclua as seguintes etapas:
- Abra o console do IAM.
- No painel de navegação, escolha Provedores de identidade.
- Escolha o IdP que você deseja atualizar.
- Na seção Impressões digitais, escolha Gerenciar.
- Escolha Adicionar impressão digital e insira o novo valor.
- Escolha Salvar alterações.
AWS CLI
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Execute o comando update-open-id-connect-provider-thumbprint da 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
Informações relacionadas
- Tópicos
- Containers
- Idioma
- Português

Conteúdo relevante
- Resposta aceita
feita há um ano
AWS OFICIALAtualizada há 3 anos