Migração obrigatória, protocolo TLS 1.2, o que fazer?

Felipo Antonoff
Postado em 26 de junho de 2018
Editado 2 anos atrás
Nesse artigo, iremos abordar sobre o protocolo de segurança TLS 1.2 e o que fazer para verificar se sua Hospedagem suporta já o mesmo ou não e que medidas tomar. # Introdução A maioria dos serviços de intermediação de Pagamento e outros serviços que precisam de integração, vão passar a usar apenas o protocolo TLS 1.2 por questão de segurança, deve ter inclusive recebido algum e-mail do Moip, Pagar.me, iugu, PagSeguro e outros serviços de Pagamento caso use um deles. A maioria já está usando a um bom tempo o protocolo TLS 1.2 como o principal, porém agora passa a ser usado apenas ele nas comunicações de alguns serviços, sendo o TLS 1.2 o mais atual e estável no momento, tem também o TLS 1.3, porém ainda está em fase de testes, sendo que em breve deve se tornar o novo TLS estável, sendo no futuro recomendado inclusive seu uso junto com o TLS 1.2. O TLS 1.2 é o padrão de segurança às novas exigências feitas pelo PCI-DSS (Payment Card Industry Data Security Standard), com o protocolo TLS 1.2, será feita uma comunicação ainda mais segura entre os serviços e integrações, que atualmente é muito comum o uso de APIs dos serviços para se comunicarem entre si, em E-commerce muito usado para pagamentos, calculo de frete, ERP, nota fiscal, marketplace, importar produtos de fornecedores, sistema de avaliação, recuperação de carrinho e muitos outros usos. O TLS serve para criptografar os dados enviados entre os serviços, por isso o uso de certificados SSL é altamente recomendado e basicamente obrigatório para E-commerce e demais sites, no qual contém dados dos clientes e outros dados importantes, pois assim não ficam expostos esses dados. # Como verificar? Vamos ensinar a verificar no caso de Hospedagem que usa a linguagem PHP, uma das mais usadas do mundo, amplamente usada em E-commerce devido o uso em grandes sistemas de E-commerce OpenSource como o Opencart, Magento, WooCommerce e Prestashop e sistemas CMS como Wordpress, Joomla, Drupal, entre outros. No caso do PHP, é usado o curl para ser feito a comunicação entre diferentes serviços, como sua Loja Opencart e o intermediador de Pagamento ou Correios por exemplo. Então precisa ser verificado a versão do seu Curl, hospedagem mais antigas e principalmente compartilhadas, costumam usar curl com versões desatualizadas e inseguras e inclusive sem o suporte do protocolo TLS 1.2, que mesmo atualmente se tornando basicamente obrigatório, já é usado por anos. ## Passos para verificar o curl pelo phpinfo() 1) Acesse o FTP/SFTP de sua Hospedagem ou pelo Gerenciador de Arquivos 2) Crie um arquivo na raiz de sua loja ou do local que encontra seu site ou aplicativo. 3) Cria um arquivo chamado info.php ou o nome que preferir 4) Coloque o seguinte conteúdo dentro desse arquivo: ```php tls_version; ``` Estamos usando uma url do https://www.howsmyssl.com para verificar a versão do TLS. 5) Salve o arquivo 6) Abra o navegador e acesse seusite.com.br/teste_ssl.php , mudando o seusite.com.br para o endereço do seusite ou loja e o test_ssl.php pelo nome que deu para o arquivo 7) Pronto, vai aparecer uma mensagem como: Protocolo TLS, versão TLS 1.2 Se aparecer a versão 1.1 ou outra, provável que o seu curl não suporta a versão TLS 1.2 ou a versão atual não usa ele como padrão, tendo que na integração informar a versão. Outra forma, para ter certeza se está ativo a versão 1.2, caso no primeiro teste apareça outra versão, seria especificar no script acima a versão do SSL, adicionando após o : ```php curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); ``` a linha: ```php curl_setopt($ch, CURLOPT_SSLVERSION, 6); ``` Dessa forma, está sendo especificado que a versão do TLS é a 1.2, para mais detalhes veja esse documento: https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html Por padrão o curl vai tentar identificar a versão remota do protocolo SSL, ou seja, a versão usada no serviço que está tentando se comunicar, porém caso não seja possível, seria recomendado especificar a versão por garantia. ## Passos para verificar o certificado SSL (cadeado verde) 1) Acesse o site: https://www.ssllabs.com/ssltest/analyze.html 2) Informe o endereço do seu site ou loja 3) Procure por Protocols e veja se aparece o TLS 1.2 marcado com Yes (sim) 4) Pronto, seu site está com o TLS 1.2 ativo 5) Se não, entre em contato com a sua hospedagem, para habilitarem o protocolo TLS 1.2 e se preferir pode desativar o 1.1 e outros, porém tem serviços que ainda usam e navegadores que ainda não suportam o 1.2, mas são poucos, por isso a maioria dos serviços já está deixando apenas o TLS 1.2 habilitado por segurança **Segue a demostração do passo a passo em Gif animado:** ![Verificando o TLS do site (certificado SSL) ](https://www.codemarket.com.br/image/blog/verificando-tls-ssl.gif) # curl Página oficial do curl: https://curl.haxx.se ## O que é curl? "O curl é usado em linhas de comando ou scripts para transferir dados. Ele também é usado em carros, televisores, roteadores, impressoras, equipamentos de áudio, telefones celulares, tablets, decodificadores, media players e é o backbone de transferência da Internet para milhares de aplicativos de software que afetam bilhões de seres humanos diariamente." Definição traduzida pelo Google Tradutor do site oficial https://curl.haxx.se. Em resumo, curl é uma forma de se comunicar entre diferentes serviços e usado também pela linguagem PHP e outras, por isso é importante estar com ele atuazado e usando versões mais atuais, já que vão sendo corrigidas falhas de segurança e melhorando outros recursos, por isso evite usar versão muito antiga, prefira versões de 2014 ou mais atual e sempre use SSL em seu site ou loja. ## Versões curl recomendada * Versão ideal, qualquer versão de 2018, por ser mais recente, porém dificilmente a hospedagem vai instalar elas, a mais atual: 7.60.00 lançada em 16/05/2018 * Versão recomenda 7.38.00 ou mais atual, lançada em 09/09/2014 e Openssl 1.0.1 ou mais atual * Versão mínima compatível 7.28.0, lançada em 10/10/2012, no qual foi adicionado o suporte ao protocolo TLS 1.1 e 1.2, porém tiveram outras versões com melhorias e ela é uma versão muito antiga. Em todo caso, em outra página do curl é informado que o suporte ao TLS 1.2 foi adicionado apenas na 7.34.0, logo por garantia talvez seja melhor usar versões mais atual que a 7.34.0. [Changelog das versões do Curl em ingles.](https://curl.haxx.se/changes.html) **Caso use uma versão não compatível com o protocolo TLS usado, pode aparecer o erro:** curl Post Erro: Unknown SSL protocol error in connection to # Como resolver? Estou com um Curl antigo, abaixo do 7.28.0 ou quero atualizar o meu, o que fazer? ## Hospedagem A recomendação ideal caso o Curl seja o 7.28.0 ou mais antigo, seria mudar de Hospedagem, pois provável que a mesma tem outros serviços desatualizados e por sua vez inseguros. Uma boa hospedagem vai usar versões mais atuais, logo talvez seja a hora de pensar em migrar para uma melhor. Caso prefira usar o suporte da Hospedagem: * Entre em contato com a sua Hospedagem e informe que deseja uma atualização do Curl para a versão 7.38.00 ou mais atual por exemplo ou informe qual versão deseja, pouco provável que irão atualizar para as últimas versões ## Hospedagem usando o Cpanel Caso preferi inicialmente não usar o Suporte da Hospedagem, pode tentar atualizar por conta própria, vamos aos passos: * Acesso o seu Cpanel * Em Configurações do PHP, mude para uma versão mais atual * Dessa forma é atualizado o PHP e o Curl também, caso tenha dúvidas peça ajuda para a Hospedagem **Observação:** dependendo do sistema usado, pode ser que seja afetado por uma versão nova do PHP, em todo caso a maioria das plataformas e módulos já suportam o PHP 5.6 ou mais atual. # Hospedagem recomendada Recomendamos evitar o uso de Hospedagem compartilhada, principalmente se tem uma Loja ou tem algum projeto com fins lucrativos, pois hospedagem compartilhada normalmente compartilha de forma errada os recursos, tendo poucos recursos para ser usado, com baixo desempenho, instável, uptime ruim e muitos serviços desatualizados e inseguro, então evite se possível esse tipo de hospedagem, principalmente se não informa os recursos que recebe ou se menciona tudo ilimitado, pois infelizmente é uma tática de Marketing para atrair clientes. ## VPS/Cloud Recursos isolados virtualmente, você recebe parte de uma máquina, podendo escalonar conforme a demanda, pode começar com uma configuração mais podesta e ir aumentando os recursos ao longo do tempo, atualmente é um dos mais indicados, pois não depende de apenas uma máquina, pode usar várias máquinas virtualmente. É oferecido normalmentea apenas o serviço, ou seja, recebe uma máquina virtual com acesso a Internet e um sistema operacional Linux/Windows instalado, precisando ser instalado e configurado o servidor, banco de dados, sistema de cache, firewall e etc, além de cuidar de tudo, não sendo recomendo para quem não tem na equipe um profissional de Infraestrutura ou não é um especialista nisso, pois é complexo de certa forma configurar tudo de forma correta e gerenciar, mesmo com diversos tutoriais fáceis de seguir para as instalações de cada serviço. No momento apenas serviços internacionais recomendamos, pois conta com Infra mais estável, melhor uptime, preço justo e já lidam com empresas enormes, logo estão preparados para atender todo tipo de caso. **Segue a lista de empresas sérias que recomendamos com esses serviços:** * Amazon AWS: a mais famossa de todas, usada por empresas gigantes, tem vários serviços além dos servidores EC2, vários datacenter no mundo todo e é uma das mais confiáveis e também tem um custo considerável, já que sua precificação é complexa e cobra basicamente por tudo, porém cobram por uso, logo é uma vantagem também, já que paga apenas o que usa. * Google Cloud: concorrente direta da Amazon AWS, muito recomendada também, tem basicamente os mesmos serviços da Amazon e também tem grandes empresas que usam, a precificação é semelhante e da mesma forma um pouco complexa * Digital Ocean: empresa inovadara e simples de usar os serviços, uma das mais famosas entre os desenvolvedores e usada por muita Startup, tem um custo relativamente menor em alguns casos e precificação direta por planos. Tem um bom limite de uso de banda e de recursos, logo não tem tantas supresas no final do mês, sendo mais fácil mensurar o custo final. Muito confiável também, tendo inclusive SLA de uptime em 99.99%, uma das que mais recomendamos, devido o excelente uptime, precificação simples e direta e fácil de usar. * Linode: semelhante a Digital Ocean, porém não teve tantas serviços novos como sua concorrente mais direta, criada antes da Digital Ocean e uma das primeiras com boa qualidade. ## Recursos isolados com Gerenciamento Normalmente são empresas com foco em gerenciar o servidores e serviços, no qual entregam tudo pronto para o uso, mas usando Infra de qualidade como as citadas acima. Recomendada para Lojas e serviços no qual não tem na equipe um especialista em Infraestrutura ou desejam focar apenas nos serviços e não se preocupar com a Hospedagem, porém ao mesmo tempo aproveitar da qualidade e recursos isolados. **Nesse modelo, indicamos as seguintes empresas:** * [Infinite Cloud](https://bit.ly/HospedagemInfiniteCloud): uma das mais famosas nesse modelo e Brasileira, atendendo diversas lojas, sites, aplicativos e até mesmo soluções SaaS, o interessante que eles deixam a parte da Infra para os melhores do mundo, ou seja, você escolher usar a Amazon AWS, Google Cloud ou a Digital Ocean e a Infinite entrega a Hospedagem pronta para ser usada com Cpanel melhorado e recursos isolados, além de CDN gratuito, proteção básica contra ataques, suporte prestativo e proativo 24h e muito mais. Tem planos claros e informação dos recursos oferecidos de forma bem transparente. Somos parceiros deles, sendo usado por mais de 40 clientes nossos com lojas Opencart, mas também suportam lojas e cms feito em outras plataformas. Recomendamos começar no plano Névoa ou Cirrus, são mais que recomendamos para a maioria dos casos e se preciso pode fazer upgrade (aumentar o plano) ou downgrade (diminuir o plano), os valores começam a partir de 39,90 reais e variam conforme a empresa de Cloud escolhida, sendo a Amazon AWS normalmente a com valor mais alto, porém compensa também se a prioridade for uptime, em todo casos todas as três são excelentes, hoje usamos a Digital Ocean e a Amazon AWS, não temos o que reclamar, só elogios. No Brasil no momento só indicamos a Infinite, internacionalmente tem outras soluções, porém o suporte não vai feito normalmente emPortuguês e não vai contar com os especialistas em Infra da Infinite, como o seu CEO que é uma das pessoas que mais entendem do assunto, em todo caso seja com a Infinite ou outra empresa, vai estar muito melhor que usando Hospedagem compartilhada e o melhor que sabendo que tem uma empresa séria cuidando de tudo para você. # Estou com o curl e o SSL atualizado, ainda não funciona e agora? Caso esteja tudo certo com o curl e a versão do protocolo TLS no SSL (cadeado verde) e mesmo assim o serviço de Pagamento, Entrega, ERP ou outro tem falha no SSL, o que fazer? **Nesse caso, provável que tenha que alterar no código da integração, vamos aos possíveis casos:** * No teste do SSL do site, apareceu apenas a versão 1.2 marcado com SSL, então provável que já está certo * Se apareceu outras versões, como o TLS 1.1, provável que a integração não está especificando a versão do TLS e a versão do seu Curl não usa como padrão a 1.2 Nesse caso, na integração vai ser preciso especificar a versão 1.2 ou a usada no serviço que está tentando integrar Em todos os casos acima, a solução é entrar em contato com o desenvolvedor da integração e em alguns casos pode ser resolvido atualizando para um Curl mais atual, no qual por padrão use o TLS 1.2 ou o TLS usado no serviço que está tentando realizar a integração.