

# Obter a impressão digital para um provedor de identidade OpenID Connect
<a name="id_roles_providers_create_oidc_verify-thumbprint"></a>

Quando você [cria um provedor de identidade OpenID Connect (OIDC)](id_roles_providers_create_oidc.md) 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](id_roles_providers_create_oidc.md#manage-oidc-provider-cli). 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](id_roles_providers_create_oidc.md), 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
<a name="oidc-obtain-thumbprint"></a>

É 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](#oidc-install-openssl) e [Configurar o OpenSSL](#oidc-configure-openssl).

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

1. <a name="thumbstep2"></a>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",
   ...
   ```

1. 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 [Step 3](#thumbstep2).

   ```
   openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
   ```

1. 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\$1list in RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) no site RFC Series.

1. 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
   ```

1. 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](https://forums.aws.amazon.com/forum.jspa?forumID=76) para entrar em contato com a AWS.

## Instalar o OpenSSL
<a name="oidc-install-openssl"></a>

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/) (https://openssl.org/source/).

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

**Para instalar o OpenSSL no Windows**

1. Acesse[OpenSSL: distribuições binárias](https://wiki.openssl.org/index.php/Binaries)(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.

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

1. Se for solicitado que você instale os **Redistribuíveis do Microsoft Visual C\$1\$1 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\$1\$1 2008**.
**nota**  
Caso não tenha certeza de que os redistribuíveis do Microsoft Visual C\$1\$1 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\$1\$1 2008 ainda não estiverem instalados. Instale a arquitetura (32 bits ou 64 bits) que corresponde à versão do OpenSSL que você instalou.

1. Depois de ter instalado os redistribuíveis do Microsoft Visual C\$1\$1 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**.

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

## Configurar o OpenSSL
<a name="oidc-configure-openssl"></a>

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
   ```

1. 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).

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

   ```
   C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. 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
   ```

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