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 usa o OpenSSL fornecida pelo sistema.
- TLS 1.2 precisa da versão 1.0.1c OpenSSL ou superior.
-
Baixe esse arquivo em seu servidor.
-
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
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 (4.5 ou maior).
- Execute o arquivo
tls-example.exe
, que pode ser encontrado clicando aqui:
Execute o arquivo como qualquer outro .exe
normalmente.
- 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."
- 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
- Execute o seguinte comando em seu servidor
node -e "console.log(process.versions)"
- 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' }
- Baixe o arquivo
tls-example.js
do nosso repositório. - Coloque-o em seu servidor, e execute-o com o comando
node tls-example.js
-
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.
Você pode encontrar informações sobre as bibliotecas OpenSSL dessa forma:
- OpenSSL instalado em seu SO:
- Execute o comando
openssl version
.
- Execute o comando
- OpenSSL que seu PHP está utilizando:
- Procure essa informação dentro do arquivo
php.ini
.
- Procure essa informação dentro do arquivo
- 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
.
-
Baixe esses arquivos em seu servidor.
-
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
-
-
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:
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.
Obtenha o arquivo .jar aqui
Dê um duplo clique sobre o arquivo TLS.jar
Execute o seguinte comando a partir do terminal na pasta que contém o arquivo TLS.jar:
java -jar TLS.jar
Classe completa aqui
-
É 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
.
-
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.
- Caso a requisição tenha sido feita com sucesso, a seguinte mensagem será exibida em seu terminal: