Motivo: Dar instruções de como atualizar e validar o TLS
Pré-requisito(s): N/A.
Ferramenta(s): Postman
Informação Básica
- TLS (Transport Layer Security) é um protocolo de segurança cuja finalidade é facilitar a segurança e privacidade de dados na Internet.
- A versão do TLS precisa estar atualizada para que não ocorra a perda dos acessos às API´s Intelipost.
Passo a Passo
1) Teste a API Intelipost
Para testar a API Intelipost, é possível usar:
- as chamadas disponíveis no link https://docs.intelipost.com.br/v1/introducao/guia-rapido sobre a API Intelipost para testes de formas manuais ou,
- o Postman (em anexo ao artigo)
2) Valide se o TLS já foi atualizado
Atualmente, estamos no protocolo TLS 1.2 e esse deverá ser o mesmo configurado nos servidores que consomem a API Intelipost. Caso o TLS esteja em uma versão inferior ao 1.2, todos os acessos à API Intelipost serão negados. Neste caso, é preciso fazer a atualização do TLS.
Cada cliente possui um sistema de infraestrutura em sua base de informações, então não conseguimos explicar um passo-a-passo de como realizar esta alteração, porém, podemos ajudar com algumas dicas.
3) Atualize o TLS (Dicas)
3.1) Se possuir um servidor AWS (Cloud Amazon), pode ser utilizado o link https://www.chowles.com/how-to-disable-tls-1-0-on-aws/
3.2) Também podem ser usadas orientações específicas para atualizar de acordo com as linguagens de programação abaixo com os SDK's disponibilizados:
- PHP
- Requisitos:
1) Versão do PHP: >= 5.4
2) Versão da biblioteca cURL: >= 7.34.0
3) Versão da biblioteca OpenSSL: >= 1.0.1c
4) O PHP utiliza o cURL fornecido pelo sistema, e precisa ter a versão do OpenSSL igual ou superior a 1.0.1c
5) Pode ser necessário atualizar as bibliotecas SSL/TLS
- Para encontrar informações sobre as bibliotecas OpenSSL, verifique:
1) OpenSSL instalado em seu sistema operacional:
Execute o comando openssl version
2) OpenSSL que o PHP está utilizando:
Procure esta informação dentro do arquivo php.ini
3) Para encontrar a versão do OpenSSL do cURL, execute o comando a seguir no servidor:
Código
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 utiliza sua própria versão da biblioteca OpenSSL, que não é a mesma que o PHP usa (arquivos openssl.so e php.ini).
- Verifique a conexão com TLS 1.2
1) Baixe esses arquivos no servidor.
2) No terminal do servidor, execute os comandos a seguir:
Código
php tls.php
Em caso de sucesso, o retorno será: "Sucesso: sua conexão com a Gerencianet está utilizando o protocolo TLS 1.2"
Em caso de falha, um dos erros a seguir deve ser exibido:
- "Peer's Certificate issuer is not recognized"
- "Unable to connect to api.gerencianet.com.br"
- "error: Could not resolve host: api.gerencianet.com.br; Name or service not known"
- Ao atualizar bibliotecas OpenSSL, é preciso atualizar a versão do OpenSSL do php_curl, e não a versão do OpenSSL do servidor operacional.
Importante: Tenha certeza de que os testes executados no terminal, utilizam a mesma versão de PHP e bibliotecas SSL/TLS que o servidor web. Se usar MAMP ou XAMPP, o PHP já é configurado com a versão mais antiga do OpenSSL, em que pode ser complicado atualizar.
- NodeJS
- Requisitos:
1) O NodeJS utiliza o OpenSSL instalado no sistema.
2) O TLS 1.2 exige que a versão mínima do OpenSSL seja a 1.0.1c.
- Verifique a conexão com TLS 1.2
1) Execute o seguinte comando no servidor:
Código
node -e "console.log(process.versions)"
2) A versão do seu OpenSSL será exibida na propriedade openssl, conforme demonstrado no exemplo a seguir:
- Execute exemplo de NodeJS
1) Baixe o arquivo tls.js
2) Coloque-o em seu servidor e execute-o com o comando node tls.js.
{
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'
}
- Ruby
- Requisitos:
1) É necessário que a versão do Ruby seja 2.0.0 ou superior assim como a do OpenSSL seja 1.0.1c ou superior:
2) O Ruby 2.0.0 ou superior é necessário para que o mesmo consiga utilizar o TLS 1.2 do OpenSSL do próprio sistema;
3) Para conseguir utilizar o TLS 1.2, é necessário o OpenSSL 1.0.1c ou superior instalado em seu sistema.
4) Para atualizar as dependências do aplicativo, talvez seja necessário utilizar o comando bundle update.
- Verifique a conexão com TLS 1.2
1) Execute o arquivo tls-example.rb, que pode ser encontrado da seguinte maneira:
Código
$ ruby tls.rb
Em caso de sucesso, o retorno será exibido em seu terminal: "Sucesso: sua conexão com a Gerencianet está utilizando o protocolo TLS 1.2".
Caso ocorra algum erro na requisição devido ao protocolo TLS, uma exceção será lançada.
- Python
- Requisitos:
1) O Python utiliza o OpenSSL fornecido pelo sistema
2) O TLS 1.2 necessita da versão OpenSSL 1.0.1c ou superior
- Verifique a conexão com TLS 1.2
1) Baixeo arquivo em seu servidor.
2) Execute o arquivo com o comando:
python tls.py
Em caso de sucesso, o retorno será: "Sucesso: sua conexão com a Gerencianet 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 TLS 1.2 no sistema, é preciso utilizar a versão mais recente do Mono (Linux) ou .NET Framework 4.5 ou superior.
- Verifique a conexão com TLS 1.2
1) Execute o arquivo Tls.exe
Windows
Execute o arquivo normalmente como qualquer outro executável (extensão .exe).
Linux
Execute o comando a partir do mono da seguinte maneira:
Código
$ mono Tls.exe
Em caso de sucesso, o retorno será: "Sucesso: sua conexão com a Gerencianet está utilizando o protocolo TLS 1.2".
- Java
- Requisitos:
1) Na versão 1.6 do Java, o TLS 1.2 está disponível a partir da atualização de número 11. Caso necessário, atualize a JDK do servidor.
2) Nas versões 1.7 e 1.8 do Java, o suporte para TLS 1.2 é nativo.
3) A habilitação deste recurso depende do servidor que a aplicação está utilizando.
- Verifique se o servidor consegue realizar requisições usando TLS 1.2
Obtenha o arquivo .jar e faça o teste.
Windows
Basta clicar 2x no arquivo tls.jar.
Linux
Execute o seguinte comando a partir do terminal, na pasta que contém o arquivo tls.jar:
Código
java -jar tls.jar
- Delphi
- Requisitos:
Para habilitar o funcionamento do protocolo TLSv1.2 no 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). As versões do Windows Server 2003 e Windows XP, além de versões mais antigas e anteriores não são compatíveis com TLS. 2.
Para testar a compatibilidade do sistema com o Protocolo TLS 1.2, faça o download da pasta completa dll-compilada, descompacte os arquivos em um diretório de preferência e execute o arquivo "GerenciaDemo.exe". No console, insira as credenciais de produção (Client_Id e Client_Secret) e clique em "Conectar". Se retornar a mensagem "Conected", o sistema é compatível.
Links
Compatibilidade do Windows com TLS 1.2
Compatibilidade do Windows com as versões do .NET Framework
- Go
Todas as versões do Go já suportam TLS 1.2 por padrão, portanto, não precisará fazer nenhuma alteração.
- Requisitos:
1) O Go usa o OpenSSL fornecido pelo sistema.
2) TLSv1.2 precisa da versão OpenSSL 1.0.1c ou superior.
3) Baixe o arquivo tls.go do nosso repositório. Coloque-o no servidor e execute-o com o comando:
Código
go run tls.go
Em caso de sucesso, o retorno será: "Gerencianet_Connection_TLS1.2_OK!".
Em caso de falha, a seguinte mensagem será exibida: "Fatalln err".
Em caso de dúvidas, utilize nossa Central de Ajuda para obter mais informações.
Comentários
0 comentário
Por favor, entre para comentar.