Amazon EKS IAM 역할을 사용하여 서비스 계정에 액세스할 때 “InvalidIdentityToken - OpenIDConnect 공급자의 HTTPS 인증서가 구성된 지문과 일치하지 않음(InvalidIdentityToken - OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint)” 오류를 해결하려면 어떻게 해야 하나요?
Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터의 지문이 변경되어 Application Load Balancer 컨트롤러가 업데이트에 실패했습니다. 또는 내 Amazon EKS 포드가 다음 오류와 함께 실패 상태입니다. "WebIdentityErr: 자격 증명을 검색하지 못함\r\n원인: InvalidIdentityToken: OpenIDConnect 공급자의 HTTPS 인증서가 구성된 지문과 일치하지 않음\r\n(WebIdentityErr: failed to retrieve credentials\r\ncaused by: InvalidIdentityToken: OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint\r\n)"
해결 방법
모든 Amazon EKS 서비스 계정은 OpenID Connect(OIDC)를 사용하여 인증합니다. Amazon EKS 클러스터용 AWS Identity and Access Management(IAM) OIDC 공급자를 생성할 때 생성된 지문은 루트 인증서를 사용합니다. Amazon 루트 인증 기관(CA)의 유효 기간은 약 25년입니다. 다음 조건 중 하나에 해당하는 경우 "HTTPS 인증서가 구성된 지문과 일치하지 않음(HTTPS certificate doesn't match configured thumbprint)" 오류가 발생합니다.
- OIDC 공급자에 사용된 지문이 만료되었습니다.
- 지문이 CA와 일치하지 않습니다.
이 문제를 해결하고 지문을 가져오려면 OpenSSL 명령줄 도구를 설치하고 구성해야 합니다.
OIDC 공급자의 지문을 가져오려면 다음을 수행합니다.
1. 다음을 수행하여 OIDC 자격 증명 공급자(IdP)의 URL을 찾습니다.
- Amazon EKS 콘솔을 엽니다.
- 탐색 창에서 [클러스터(Clusters)]를 선택합니다.
- 확인할 클러스터를 선택합니다.
- [구성(Configuration)] 탭을 선택합니다.
- [세부 정보(Details)] 섹션에서 OICD 공급자 URL을 확인합니다.
예: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/
OICD 공급자 URL의 끝에 /.well-known/openid-configuration을 포함하여 IdP의 구성 문서에 대한 URL을 구성합니다.
예: https://oidc.eks.us-east-1.amazonaws.com/id/1111222233334444555566667777888F/.well-known/openid-configuration
웹 브라우저에서 이 URL에 액세스하고 출력의 jwks_uri 값을 기록해 둡니다. 브라우저 출력은 다음과 유사합니다.
{"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. OpenSSL 명령줄 도구로 다음 명령을 실행하여 사용된 모든 인증서를 표시합니다.
참고: oidc.eks.us-east-2.amazonaws.com을 1단계에서 반환된 도메인 이름으로 바꿔야 합니다.
openssl s_client -connect oidc.eks.us-east-2.amazonaws.com:443 -showcerts
출력은 다음과 유사합니다.
[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 ---
출력에 둘 이상의 인증서가 표시되면 출력 끝에 표시된 마지막 인증서를 찾습니다. 마지막 인증서는 인증 기관 체인의 루트 CA입니다.
3. 인증서 파일(예: certificate.crt)을 만들고 마지막 인증서의 내용을 이 파일에 복사합니다. 그리고 다음 명령을 실행합니다.
openssl x509 -in certificate.crt -text
출력은 다음과 유사합니다.
[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
[유효 기간 시작 날짜(Not Before)] 및 [유효 기간 종료 날짜(Not After)] 필드의 값으로 인증서가 유효한지 확인할 수 있습니다. 출력에서 Amazon CA의 유효 기간이 약 25년임을 알 수 있습니다.
4. 출력에 인증서가 만료되었다고 표시되면 OIDC 공급자를 통해 인증서를 갱신해야 합니다. 인증서를 갱신한 후 OpenSSL 명령줄 도구를 사용하여 다음 명령을 실행하여 최신 지문을 가져옵니다.
openssl x509 -in certificate.crt -fingerprint -noout
출력은 다음과 유사합니다.
SHA1 Fingerprint=9E:99:A4:8A:99:60:B1:49:26:BB:7F:3B:02:E2:2D:A2:B0:AB:72:80
이 문자열에서 콜론(:)을 삭제하여 최종 지문을 가져옵니다.
9E99A48A9960B14926BB7F3B02E22DA2B0AB7280
또는
다음 명령을 실행하여 세미콜론을 제외한 후 최신 지문을 가져옵니다.
$ openssl x509 -in certificate.crt -fingerprint -noout | sed s/://g
5. 현재 지문이 만료된 경우 4단계의 최신 지문을 사용하여 바꿉니다. IAM 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 이 작업을 수행할 수 있습니다.
콘솔을 사용하여 지문을 바꾸려면 다음을 수행합니다.
- IAM 콘솔을 엽니다.
- 탐색 창에서 [자격 증명 공급자(Identity providers)]를 선택합니다.
- 업데이트하려는 자격 증명 공급자를 선택합니다.
- [지문(Thumbprints)] 섹션에서 [관리(Manage)]를 선택합니다.
- [지문 추가(Add thumbprint)]를 선택하고 새 값을 입력합니다.
- [변경 사항 저장(Save changes)]을 선택합니다.
또는
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
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
관련 정보
OpenID Connect 자격 증명 공급자에 대한 루트 CA 지문 얻기

관련 콘텐츠
- 질문됨 6달 전lg...
- 질문됨 6달 전lg...
- 질문됨 6년 전lg...
- 질문됨 한 달 전lg...
- AWS 공식업데이트됨 10달 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 7달 전