Skip to content

Latest commit

 

History

History
225 lines (154 loc) · 7.33 KB

README.md

File metadata and controls

225 lines (154 loc) · 7.33 KB

Introdução

Esse repositório contém dicas e instruções para te ajudar a verificar se seu sistema é compatível com certificados TLS 1.2.

Tornar seu sistema compatível com esse protocolo de segurança é responsabilidade total sua, e este é apenas um repositório que tentará te ajudar à fazer isso.

Para cada linguagem de programação, há um passo à passo diferente, para que você descubra se seu sistema é compatível com o TLS 1.2 ou não. Escolha sua linguagem abaixo e veja os requisitos para que tudo funcione perfeitamente.


Python

Requisitos

  • Python usa o OpenSSL fornecida pelo sistema.
  • TLS 1.2 precisa da versão 1.0.1c OpenSSL ou superior.

Verificando sua conexão com TLS 1.2.

  1. Baixe esse arquivo em seu servidor.

  2. Execute-o arquivo com o comando python tls-example.py

    • Em caso de sucesso, a seguinte mensagem será retornada:
    Sucesso: sua conexão com a Pagar.me está utilizando o protocolo TLS 1.2.
    
    • Em caso de falha, a seguinte mensagem será exibida:
    Sua versão SSL é XXX
    Sua versão deve ser superior à 1.0.1c
    

.NET

Requisitos

Para habilitar o funcionamento do protocolo TLSv1.2 em seu sistema, a única coisa necessária é utilizar a versão mais recente do Mono(linux) ou .NET Framework (maior que 4.5, recomendado >= 4.6.2).

Verificando suas versões de .NET e TLS

  1. Execute o arquivo tls-example.exe, que pode ser encontrado clicando aqui:
Windows:

Execute o arquivo como qualquer outro .exe normalmente.

Linux:
  • Execute o comando a partir do mono da seguinte maneira:
    $ mono tls-example.exe
    
  • Caso a requisição retorne sucesso, a seguinte mensagem será exibida em seu terminal:
    "Sucesso: sua conexão com a Pagar.me está utilizando o protocolo TLS 1.2."
    

Links:


Node

Requisitos

  • O Node utiliza o OpenSSL instalado no sistema
  • O TLSv1.2 exige que a versão mínima do OpenSSL seja a 1.0.1c

Verificando a versão do SSL

  1. Execute o seguinte comando em seu servidor
    node -e "console.log(process.versions)"
    
  2. A versão do seu OpenSSL será exibida na propriedade openssl:
    {
      http_parser: '2.7.0',
      node: '8.6.0',
      v8: '6.0.287.53',
      uv: '1.14.1',
      zlib: '1.2.11',
      ares: '1.10.1-DEV',
      modules: '57',
      nghttp2: '1.25.0',
      openssl: '1.0.2l',
      icu: '59.1',
      unicode: '9.0',
      cldr: '31.0.1',
      tz: '2017b' 
    }
    

Executando exemplo de Node

  1. Baixe o arquivo tls-example.js do nosso repositório.
  2. Coloque-o em seu servidor, e execute-o com o comando node tls-example.js

PHP

Requisitos

  • Versão do PHP: >= 5.3

  • Versão da biblioteca cURL: >= 7.34.0

  • Versão da biblioteca OpenSSL: >= 1.0.1c

  • O PHP utiliza o curl fornecido pelo sistema, e precisa possuir a versão do OpenSSL igual ou superior à 1.0.1c.

  • Clique neste link para entender como funciona o versionamento das bibliotecas SSL. Talvez você precise atualizá-la.

Guias

Você pode encontrar informações sobre as bibliotecas OpenSSL dessa forma:

  1. OpenSSL instalado em seu SO:
    • Execute o comando openssl version.
  2. OpenSSL que seu PHP está utilizando:
    • Procure essa informação dentro do arquivo php.ini.
  3. Para encontrar a versão do OpenSSL de seu cURL, execute o comando abaixo em seu servidor
    php -r 'echo json_encode(curl_version(), JSON_PRETTY_PRINT);'
    

Todas essas bibliotecas OpenSSL podem ser diferentes, e atualizar uma não atualizará a outra automaticamente.

O php_curl usa sua própria versão da biblioteca OpenSSL, que não é a mesma que o PHP usa, que estão nos arquivos openssl.so e php.ini.

Verificando sua conexão com TLS 1.2

  1. Baixe esses arquivos em seu servidor.

  2. Execute esses comandos no terminal de seu servidor:

    php tls-example.php
    
    • Em caso de sucesso:

      Sucesso: sua conexão com a Pagar.me está utilizando o protocolo TLS 1.2.
      
    • Em caso de falha um dos erros abaixo deve ocorrer:

      Peer's Certificate issuer is not recognized
      
      
      Unable to connect to api.pagar.me
      
      error: Could not resolve host: api.pagar.me; Name or service not known
      
  3. Ao atualizar bibliotecas OpenSSL, você precisa atualizar a versão do OpenSSL de seu php_curl, e não a versão do OpenSSL de seu servidor operacional.

Nota: Tenha certeza que os testes executados em seu terminal utilizam a mesma versão de PHP e bibliotecas SSL/TLS que seu servidor web. Se você usar MAMPP ou XAMPP, o PHP já é configurado com a versão mais antiga do OpenSSL, onde pode ser complicado atualizar. Alguns links que podem te ajudar nessa atualização são esses:


Java

TLS V1.2 no Java

Na versão 1.6 do Java, o TLS v1.2 está disponível a partir da atualização de número 11. Caso necessário, atualize JDK de seu servidor, as versões mais recentes estão disponíveis aqui.

Na versão 1.7 e 1.8 do Java o suporte para TLS v1.2 é nativo.

A habilitação deste recurso depende do servidor que sua aplicação está utilizando.

Vericando se o seu servidor é capaz de realizar requisições utilizando o TLS v.12

Obtenha o arquivo .jar aqui

Windows

Dê um duplo clique sobre o arquivo TLS.jar

Linux

Execute o seguinte comando a partir do terminal na pasta que contém o arquivo TLS.jar:

java -jar TLS.jar

Classe completa aqui


Ruby

Requisitos

  • É necessário que a versão de seu Ruby seja 2.0.0 ou superior, assim como a do OpenSSL 1.0.1c ou superior:

    • O Ruby 2.0.0 ou superior é necessário para que o mesmo consiga utilizar o TLSv1.2 do OpenSSL de seu próprio sistema;
    • Para conseguir utilizar o TLSv1.2 é necessário o OpenSSL 1.0.1c ou superior instalado em seu sistema.
  • Para atualizar as dependências de seu aplicativo, talvez seja necessário utilizar o comando bundle update.

Verificando sua conexão com TSL 1.2

  1. Execute o arquivo tls-example.rb, que pode ser encontrado aqui, da seguinte maneira:

    $ ruby tls-example.rb
    
    • Caso a requisição tenha sido feita com sucesso, a seguinte mensagem será exibida em seu terminal:
      Sucesso: sua conexão com a Pagar.me está utilizando o protocolo TLS 1.2.
      
    • Caso ocorra alguam erro na requisição devido ao protocolo TLS, uma excessão será lançada.