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

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

Quando você cria um provedor de identidade OpenID Connect (OIDC) no IAM, você deve fornecer uma impressão digital. O IAM requer a impressão digital da principal autoridade de certificação (CA) intermediária que assinou o certificado usado pelo provedor de identidade externo (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 fornecer 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 os clientes e o endpoint de federação. Isso pode ser emitido por uma CA raiz pública, como AWS Certificate Manager. O segundo é usado para assinar tokens. Recomendamos que você emita isso usando uma CA privada.

Você pode 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ê deve obter a impressão digital manualmente e fornecê-la para o AWS. Quando você cria um provedor de identidade OIDC com o console do IAM, o console tenta obter a impressão digital para você. Recomendamos que você também obtenha a impressão digital para o seu OIDC IdP manualmente e verifique se a impressão digital foi obtida do console correto.

Você pode usar um navegador da web e a ferramenta de linha de comando OpenSSL para obter a impressão digital para um provedor OIDC. Para obter mais informações, consulte as seções a seguir.

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.

    nota

    AWSA protege a comunicação com alguns provedores de identidade (IdPs) OIDC por meio de nossa biblioteca de autoridades de certificação (CAs) confiáveis, em vez de usar uma impressão digital do certificado para verificar o certificado do servidor IdP. Esses IdPs OIDC incluem o Google e aqueles que usam um bucket do Amazon S3 para hospedar um endpoint JSON Web Key Set (JWKS). Nesses casos, sua impressão digital herdada permanece em sua configuração, mas não é mais usada para validação.

  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 da 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.

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

    openssl x509 -in certificate.crt -fingerprint -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 AWS CLI, o Tools for Windows PowerShell ou a API do IAM, forneça esta impressão digital ao criar o provedor.

    Se você estiver criando o provedor de identidade OIDC do IAM no console do IAM, compare essa impressão digital com a impressão mostrada no console na página Verify Provider Information (Verificar informações do provedor) ao criar um provedor OIDC.

    Importante

    Se a impressão digital obtida não corresponder à que você vir no console, não crie o provedor OIDC no console. Em vez disso, você deve aguardar algum tempo e, em seguida, tentar criar novamente o provedor OIDC, garantindo que as impressões digitais coincidam antes de criar 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. Você pode 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. Você pode 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.