Obter a impressão digital para um provedor de identidade OpenID Connect - AWS Identity and Access Management

Obter a impressão digital para um provedor de identidade OpenID Connect

Quando você cria um provedor de identidade OpenID Connect (OIDC) no IAM, o IAM exige uma impressão digital para a autoridade de certificação (CA) intermediária superior que assinou o certificado usado pelo provedor de identidades (IdP). A impressão digital é uma assinatura para o certificado da CA que foi usada para emitir o certificado para o IdP compatível com OIDC. Ao criar um provedor de identidade OIDC do IAM, você confia nas identidades autenticadas por esse IdP para ter acesso à sua Conta da AWS. Ao usar a impressão digital do certificado da CA, você confiará em qualquer certificado emitido pela CA que tenha o mesmo nome do DNS registrado. Isso elimina a necessidade de atualizar confianças em cada conta quando você renovar o certificado de assinatura do IdP.

Importante

Na maioria dos casos, o servidor de federação usa dois certificados diferentes:

  • O primeiro estabelece uma conexão HTTPS entre a AWS e seu IdP. Isso deve ser emitido por uma CA de raiz pública confiável, como o AWS Certificate Manager. Isso permite que o cliente verifique a confiabilidade e o status do certificado.

  • O segundo é usado para criptografar tokens e deve ser assinado por uma CA de raiz privada ou pública.

É possível criar um provedor de identidade OIDC do IAM com a AWS Command Line Interface, o Tools for Windows PowerShell ou a API do IAM. Ao usar esses métodos, você tem a opção de fornecer manualmente uma impressão digital. Se você optar por não incluir uma impressão digital, o IAM recuperará a impressão digital da CA intermediária superior do certificado do servidor do IdP OIDC. Se você optar por incluir uma impressão digital, será necessário obtê-la manualmente e fornecê-la para a AWS.

Quando você cria um provedor de identidade OIDC com o console do IAM, o IAM tenta recuperar a impressão digital da CA intermediária superior do certificado de servidor IdP do OIDC para você.

Recomendamos que você também obtenha a impressão digital para o seu IdP OIDC manualmente e verifique se a impressão digital correta foi recuperada pelo IAM. Para obter mais informações sobre como obter impressões digitais do certificado, consulte as seções a seguir.

nota

A AWS protege a comunicação com provedores de identidade (IdPs) OIDC usando nossa biblioteca de autoridades de certificação (CAs) raiz confiáveis para verificar o certificado TLS do endpoint JSON Web Key Set (JWKS). Se o seu IdP do OIDC depende de um certificado que não é assinado por uma dessas CAs confiáveis, somente então protegemos a comunicação usando as impressões digitais definidas na configuração do IdP. A AWS recorrerá à verificação de impressão digital se não conseguirmos recuperar o certificado TLS ou se o TLS v1.3 for necessário.

Obter impressão digital do certificado

É possível usar um navegador da Web e a ferramenta de linha de comando OpenSSL para obter a impressão digital do certificado para um provedor OIDC. No entanto, não é necessário obter manualmente a impressão digital do certificado para criar um provedor de identidade OIDC do IAM. É possível usar o seguinte procedimento para obter a impressão digital do certificado do provedor OIDC.

Para obter a impressão digital para um IdP OIDC
  1. A fim de obter a impressão digital para um IdP OIDC, você precisa obter a ferramenta de linha de comando OpenSSL. Use esta ferramenta para baixar a cadeia de certificados do IdP OIDC e gerar uma impressão digital do certificado final na cadeia de certificados. Se você precisar instalar e configurar o OpenSSL, siga as instruções em Instalar o OpenSSL e Configurar o OpenSSL.

  2. Comece com o URL do IdP OIDC (por exemplo, https://server.example.com) e, em seguida, adicione /.well-known/openid-configuration para formar o URL para o documento de configuração do IdP, como o seguinte:

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

    Abra este URL em um navegador da Web, substituindo server.example.com pelo nome do seu servidor IdP.

  3. No documento exibido, use o recurso Find (Localizar) do navegador da Web para localizar o texto "jwks_uri". Imediatamente após o texto "jwks_uri" você verá dois pontos (:) seguidos por um URL. Copie o nome de domínio totalmente qualificado do URL. Não inclua https:// nem qualquer caminho que venha após o domínio de nível superior.

    { "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. Use a ferramenta de linha de comando OpenSSL para executar o comando a seguir. Substitua keys.example.com pelo nome de domínio que você obteve em Passo 3.

    openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
  5. Na janela de comando, role até ver um certificado semelhante ao exemplo a seguir. Se você vir mais de um certificado, encontre o último certificado exibido (no final da saída do comando). Ele contém o certificado da principal CA intermediária na cadeia de autoridade de certificação.

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

    Copie o certificado (incluindo as linhas -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----) e cole-o em um arquivo de texto. Em seguida, salve o arquivo com o nome certificate.crt.

    nota

    A cadeia de certificados do provedor de identidade de OIDC deverá começar com o URL do domínio ou do emissor, incluir quaisquer certificados intermediários (caso presentes) e terminar com o certificado raiz. Se a ordem da cadeia de certificados for diferente ou incluir certificados duplicados ou adicionais, você receberá um erro de incompatibilidade de assinatura e o STS falhará ao validar o JSON Web Token (JWT). Corrija a ordem dos certificados na cadeia retornados do servidor para resolver o erro. Para obter mais informações sobre os padrões da cadeia de certificados, consulte certificate_list in RFC 5246 no site RFC Series.

  6. Use a ferramenta de linha de comando OpenSSL para executar o comando a seguir.

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

    Sua janela de comando exibe a miniatura do certificado, que é similar ao exemplo a seguir:

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

    Remova os caracteres de dois pontos (:) desta string para produzir a impressão digital final, desta forma:

    990F4193972F2BECF12DDEDA5237F9C952F20D9E
  7. Se você estiver criando o provedor de identidade OIDC do IAM com a AWS CLI, o Tools for Windows PowerShell ou a API do IAM, é opcional fornecer uma impressão digital. Se você optar por não incluir uma impressão digital durante a criação, o IAM recuperará a impressão digital da CA intermediária superior do certificado do servidor do IdP OIDC. Depois que o provedor de identidade OIDC do IAM for criado, você poderá comparar essa impressão digital com a impressão digital recuperada pelo IAM.

    Se você estiver criando o provedor de identidade OIDC do IAM no console do IAM, o console tenta recuperar a impressão digital da CA intermediária superior do certificado de servidor IdP do OIDC para você. É possível comparar essa impressão digital com a impressão digital recuperada pelo IAM. Depois que o provedor de identidade OIDC do IAM for criado, você poderá ver a impressão digital do provedor de identidade OIDC do IAM na guia Verificação de endpoint na página do console Resumo do provedor OIDC.

    Importante

    Se a impressão digital obtida não corresponder à que você vir nos detalhes de impressão digital do provedor de identidade OIDC do IAM, você não deve usar o provedor OIDC. Em vez disso, você deve excluir o provedor OIDC criado e tentar criar o provedor OIDC novamente depois de um tempo. Verifique se as impressões digitais coincidem antes de usar o provedor. Se as impressões digitais ainda não coincidirem após uma segunda tentativa, use o Fórum do IAM para entrar em contato com a AWS.

Instalar o OpenSSL

Se você ainda não tiver o OpenSSL instalado, siga as instruções descritas nesta seção.

Para instalar o OpenSSL no Linux ou Unix
  1. Acesse OpenSSL: Source, Tarballs (https://openssl.org/source/).

  2. Baixe a fonte mais recente e crie o pacote.

Para instalar o OpenSSL no Windows
  1. AcesseOpenSSL: distribuições binárias(https://wiki.openssl.org/index.php/Binaries) para obter uma lista de sites por meio dos quais você pode instalar a versão do Windows.

  2. Siga as instruções no site selecionado para iniciar a instalação.

  3. Se for solicitado que você instale os Redistribuíveis do Microsoft Visual C++ 2008 e eles ainda não estiverem instalados no seu sistema, escolha o link de download apropriado para o seu ambiente. Siga as instruções fornecidas pelo Assistente de instalação de redistribuível do Microsoft Visual C++ 2008.

    nota

    Caso não tenha certeza de que os redistribuíveis do Microsoft Visual C++ 2008 já estão instalados no seu sistema, você poderá tentar instalar o OpenSSL primeiro. O instalador do OpenSSL exibe um alerta se os redistribuíveis do Microsoft Visual C++ 2008 ainda não estiverem instalados. Instale a arquitetura (32 bits ou 64 bits) que corresponde à versão do OpenSSL que você instalou.

  4. Depois de ter instalado os redistribuíveis do Microsoft Visual C++ 2008, selecione a versão apropriada dos binários OpenSSL para o seu ambiente e salve o arquivo localmente. Inicie o Assistente de configuração do OpenSSL.

  5. Siga as instruções descritas no OpenSSL Setup Wizard (Assistente de configuração do OpenSSL).

Configurar o OpenSSL

Antes de usar comandos OpenSSL, você deve configurar o sistema operacional para que ele tenha informações sobre o local em que o OpenSSL está instalado.

Para configurar o OpenSSL no Linux ou no Unix
  1. Na linha de comando, defina a variável OpenSSL_HOME para o local da instalação do OpenSSL:

    $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
  2. Defina o caminho para incluir a instalação do OpenSSL:

    $ export PATH=$PATH:$OpenSSL_HOME/bin
    nota

    Todas as alterações feitas nas variáveis de ambiente com o comando export são válidas apenas para a sessão atual. É possível fazer alterações persistentes nas variáveis de ambiente definindo-as no arquivo de configuração do shell. Para obter mais informações, consulte a documentação do seu sistema operacional.

Para configurar o OpenSSL no Windows
  1. Abra a janela Command Prompt (Prompt de comando).

  2. Defina a variável OpenSSL_HOME para o local da instalação do OpenSSL:

    C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
  3. Defina a variável OpenSSL_CONF para o local do arquivo de configuração em sua instalação do OpenSSL:

    C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
  4. Defina o caminho para incluir a instalação do OpenSSL:

    C:\> set Path=%Path%;%OpenSSL_HOME%\bin
    nota

    Todas as alterações feitas nas variáveis de ambiente do Windows em uma janela Command Prompt (Prompt de comando) são válidas apenas para a sessão de linha de comando atual. É possível fazer alterações persistentes nas variáveis de ambiente definindo-as como propriedades do sistema. Os procedimentos exatos dependem da versão do Windows que você está usando. (Por exemplo, no Windows 7, abra Control Panel (Painel de Controle), System and Security (Sistema e Segurança), System (Sistema). Em seguida, escolha Advanced system settings (Configurações avançadas do sistema), guia Advanced (Avançado), Environment Variables (Variáveis de ambiente).) Para obter mais informações, consulte a documentação do Windows.