OpenID Connect ID 공급자에 대한 지문 얻기 - AWS Identity and Access Management

OpenID Connect ID 공급자에 대한 지문 얻기

IAM 콘솔에서 OIDC(OpenID Connect) ID 공급자를 생성할 때 지문을 제공해야 합니다. IAM에서는 외부 자격 증명 공급자(IdP)가 사용하는 인증서에 서명할 최상위 중간 인증 기관(CA)의 지문이 있어야 합니다. 지문은 OIDC 호환 IdP에 대한 인증서 발급에 사용되는 CA에 대한 서명입니다. IAM OIDC 자격 증명 공급자를 생성하는 경우 해당 IdP에 의해 인증된 자격 증명이 자신의 AWS 계정에 액세스할 수 있도록 신뢰하는 것입니다. CA의 인증서 지문을 제공함으로써 등록된 것과 DNS 이름이 동일한 CA에서 발급한 모든 인증서를 신뢰하게 됩니다. 이를 통해 IdP의 서명 인증서를 갱신할 때 각 계정의 신뢰를 업데이트할 필요가 없습니다.

중요

대부분의 경우 연동 서버는 두 가지 다른 인증서를 사용합니다.

  • 첫 번째는 AWS 및 IdP 사이의 HTTPS 연결을 설정합니다. 이는 잘 알려진 퍼블릭 루트 CA(예: AWS Certificate Manager)에서 발급해야 합니다. 이렇게 하면 클라이언트가 인증서의 안정성과 상태를 확인할 수 있습니다.

  • 두 번째는 토큰을 암호화하는 데 사용되며 프라이빗 또는 퍼블릭 루트 CA가 서명해야 합니다.

AWS Command Line Interface, Tools for Windows PowerShell 또는 IAM API를 사용하여 IAM OIDC 자격 증명 공급자를 생성할 수 있습니다. 이러한 방법을 사용하는 경우 지문은 선택 사항입니다. 지문을 포함하지 않기로 선택하면 IAM은 OIDC IdP 서버 인증서의 최상위 임시 CA 지문을 검색합니다. 지문을 포함하도록 선택한 경우 지문을 수동으로 획득하여 AWS에 제공해야 합니다.

IAM 콘솔을 사용하여 OIDC ID 공급자를 생성하는 경우에는 콘솔에서 지문 검색을 시도합니다. 또한, OIDC IdP의 지문을 수동으로 가져와서 콘솔이 올바른 지문을 검색했는지도 확인하는 것이 좋습니다. 인증서 지문을 얻는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

인증서 지문 얻기

웹 브라우저와 OpenSSL 명령줄 도구를 사용하여 OIDC 공급자의 인증서 지문을 얻습니다. 하지만 수동으로 인증서 지문을 얻어서 IAM OIDC ID 공급자를 생성할 필요는 없습니다. 다음 절차를 통해 OIDC 공급자의 인증서 지문을 얻을 수 있습니다.

참고

AWS는 인증서 지문을 사용하여 IdP 서버 인증서를 검증하는 대신 신뢰할 수 있는 루트 인증 기관(CA) 라이브러리를 통해 일부 OIDC ID 공급자(IdP)와의 통신을 보호합니다. 이러한 경우 레거시 지문은 구성에 그대로 유지되지만 더 이상 검증에 사용되지 않습니다. Auth0, GitHub, GitLab, Google, Amazon S3 버킷을 사용하여 JSON 웹 키 집합(JWKS) 엔드포인트를 호스팅하는 IdP 등이 이러한 OIDC IdP에 포함됩니다.

OIDC IdP의 지문을 얻으려면
  1. OIDC IdP의 지문을 얻으려면, 먼저 OpenSSL 명령줄 도구를 얻어야 합니다. 이 도구를 사용하여 OIDC IdP 인증서 체인을 다운로드하고 인증서 체인에 있는 마지막 인증서의 지문을 생성합니다. OpenSSL을 설치 및 구성해야 하는 경우 OpenSSL 설치OpenSSL 구성의 지침을 따르세요.

  2. OIDC IdP URL(예: https://server.example.com)로 시작한 다음 /.well-known/openid-configuration을 추가하여 다음과 같이 OIDC IdP의 구성 문서에 대한 URL을 만듭니다.

    https://server.example.com/.well-known/openid-configuration

    웹 브라우저에서 이 URL을 열 때 server.example.com을 IdP 서버 이름으로 바꾸어 엽니다.

  3. 표시되는 문서에서 웹 브라우저 찾기 기능을 사용하여 "jwks_uri" 텍스트를 찾습니다. "jwks_uri" 텍스트 바로 뒤에 콜론(:)과 URL이 보입니다. 그 URL의 정규화된 도메인 이름을 복사합니다. https:// 또는 최상위 도메인 다음에 오는 경로는 포함하지 마세요.

    { "issuer": "https://accounts.example.com", "authorization_endpoint": "https://accounts.example.com/o/oauth2/v2/auth", "device_authorization_endpoint": "https://oauth2.exampleapis.com/device/code", "token_endpoint": "https://oauth2.exampleapis.com/token", "userinfo_endpoint": "https://openidconnect.exampleapis.com/v1/userinfo", "revocation_endpoint": "https://oauth2.exampleapis.com/revoke", "jwks_uri": "https://www.exampleapis.com/oauth2/v3/certs", ...
  4. OpenSSL 명령줄 도구를 사용하여 다음 명령을 실행합니다. 이때 keys.example.com단계 3에서 얻은 도메인 이름으로 바꿉니다.

    openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
  5. 명령 창에서 다음 예제와 비슷한 인증서가 보일 때까지 위로 스크롤합니다. 인증서가 두 개 이상 있을 경우 명령 출력의 하단에서 표시된 마지막 인증서를 찾습니다. 여기에는 인증 기관 체인의 최상위 중간 CA 인증서가 포함됩니다.

    -----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----

    인증서를 복사해(-----BEGIN CERTIFICATE----------END CERTIFICATE----- 줄 포함) 텍스트 파일에 붙여 넣습니다. 그 다음에 그 파일을 certificate.crt라는 이름으로 저장합니다.

    참고

    OIDC ID 제공업체의 인증서 체인은 도메인 또는 발급자 URL로 시작하고, 그다음으로 중간 인증서, 마지막으로는 루트 인증서여야 합니다. 인증서 체인 순서가 다른 경우 또는 중복되거나 추가 인증서가 포함된 경우 서명 불일치 오류가 발생하고 STS는 JSON 웹 토큰(JWT) 유효성 검사에 실패합니다. 서버에서 반환된 체인의 인증서 순서를 수정하여 오류를 해결하세요. 인증서 체인 표준에 대한 자세한 내용은 RFC 시리즈 웹 사이트에서 RFC 5246의 certificate_list를 참조하세요.

  6. OpenSSL 명령줄 도구를 사용하여 다음 명령을 실행합니다.

    openssl x509 -in certificate.crt -fingerprint -sha1 -noout

    다음 예제와 비슷한 인증서 지문이 명령 창에 표시됩니다.

    SHA1 Fingerprint=99:0F:41:93:97:2F:2B:EC:F1:2D:DE:DA:52:37:F9:C9:52:F2:0D:9E

    이 문자열에서 콜론 문자(:)를 제거하여 다음과 같은 최종 지문을 생성합니다.

    990F4193972F2BECF12DDEDA5237F9C952F20D9E
  7. AWS CLI, Tools for Windows PowerShell 또는 IAM API를 사용하여 IAM OIDC 자격 증명 공급자를 생성하는 경우 공급자를 생성할 때 이 지문을 제공합니다.

    IAM 콘솔에서 IAM OIDC 자격 증명 공급자를 생성하는 경우에는 OIDC 공급자를 생성할 때 콘솔에서 공급자 정보 확인(Verify Provider Information) 페이지에 표시되는 지문과 이 지문을 비교합니다.

    중요

    얻은 지문이 콘솔에 표시되는 지문과 일치하지 않을 경우 콘솔에서 OIDC 공급자를 만들어서는 안 됩니다. 대신 잠시 기다렸다가 공급자를 만들기 전에 지문이 일치하는지 확인하며 다시 OIDC 공급자를 만들어 보세요. 두 번째 시도 후에도 지문이 여전히 일치하지 않을 경우에는 IAM 포럼을 통해 AWS에 문의하세요.

OpenSSL 설치

아직 OpenSSL을 설치하지 않았다면 이 단원에 나오는 지침을 따르세요.

Linux 또는 Unix에서 OpenSSL을 설치하려면
  1. OpenSSL: Source, Tarballs(https://openssl.org/source/)로 이동합니다.

  2. 최신 소스를 다운로드하여 패키지를 생성합니다.

Windows에서 OpenSSL을 설치하려면
  1. Windows 버전을 설치할 수 있는 사이트 목록을 보려면 OpenSSL: Binary Distributions(https://wiki.openssl.org/index.php/Binaries)로 이동합니다.

  2. 선택한 사이트의 지침을 따라 설치를 시작합니다.

  3. Microsoft Visual C++ 2008 재배포 가능 패키지 설치를 묻는 메시지가 표시되고 아직 시스템에 설치되지 않았다면 환경에 적합한 다운로드 링크를 선택합니다. Microsoft Visual C++ 2008 재배포 가능 패키지 설치 마법사의 지시를 따릅니다.

    참고

    시스템에 Microsoft Visual C++ 2008 Redistributables가 설치되어 있는지 알 수 없는 경우 OpenSSL을 먼저 설치합니다. Microsoft Visual C++ 2008 Redistributables가 설치되지 않은 경우에는 OpenSSL 설치 관리자에 알림이 표시됩니다. 설치할 OpenSSL 버전에 해당하는 아키텍처(32비트 또는 64비트)를 설치해야 합니다.

  4. Microsoft Visual C++ 2008 Redistributables를 설치한 후에는 환경에 맞는 OpenSSL 바이너리를 선택하고 파일을 로컬 위치에 저장합니다. OpenSSL 설치 마법사를 시작합니다.

  5. OpenSSL 설치 마법사의 지시에 따릅니다.

OpenSSL 구성

OpenSSL 명령을 사용하려면 OpenSSL이 설치된 위치 정보가 담기도록 운영 체제를 구성해야 합니다.

Linux 또는 Unix에서 OpenSSL을 구성하려면
  1. 명령줄에서 OpenSSL_HOME 변수를 OpenSSL 설치 위치로 설정합니다.

    $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
  2. OpenSSL 설치가 포함되도록 경로를 설정합니다.

    $ export PATH=$PATH:$OpenSSL_HOME/bin
    참고

    export 명령을 사용하여 변경한 환경 변수는 현재 세션에만 유효합니다. 쉘 구성 파일에서 설정하면 환경 변수의 영구 변경이 가능합니다. 자세한 내용은 운영 체제 설명서를 참조하세요.

Windows에서 OpenSSL을 구성하려면
  1. 명령 프롬프트 창을 엽니다.

  2. OpenSSL_HOME 변수를 OpenSSL 설치 위치로 설정합니다.

    C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
  3. OpenSSL_CONF 변수를 OpenSSL 설치에 있는 구성 파일 위치로 설정합니다.

    C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
  4. OpenSSL 설치가 포함되도록 경로를 설정합니다.

    C:\> set Path=%Path%;%OpenSSL_HOME%\bin
    참고

    명령 프롬프트 창에서 변경한 Windows 환경 변수는 현재 명령줄 세션에만 유효합니다. 환경 변수를 시스템 속성으로 설정하면 환경 변수의 영구 변경이 가능합니다. 정확한 절차는 사용 중인 Windows 버전에 따라 달라집니다. 예를 들어 Windows 7에서는 제어판, 시스템 및 보안, 시스템을 연 다음 고급 시스템 설정, 고급 탭, 환경 변수(Environment Variables)를 선택합니다. 자세한 내용은 Windows 설명서를 참조하세요.