PHP — Seu servidor esta pronta para as evolução do TLS?
Olá Gente
Todas tecnologias evoluem, segurança não é diferente, o TLS esta sendo implantado gradativamente a algum tempo, e este ano diversas plataformas estão passando a permitir apenas o TLS 1.2 (Ou superior).
Achas que isto não ira te afetar? Usa Paypal em seu site? Então veja:
Toda plataforma esta atualizando suas apis para os novos protocolos de segurança e isto requer que nós, desenvolvedoras, fiquemos atentas.
Vamos ver o problema acontecendo, irei tentar fazer um GET para a API do paypal através de um servidor rodando PHP 5.2 utilizando OpenSSL/0.9:
<?php
$ch = curl_init("https://www.sandbox.paypal.com/cgi-bin/webscr");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$res = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_err = curl_error($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($curl_errno)
{
echo "HTTP_CODE: " . $httpcode;
echo "<br>";
echo "ERRO: " . $curl_errno . ": " . $curl_err;
}else{
echo "HTTP_CODE: " . $httpcode;
}
curl_close($ch);
?>
Automáticamente gera o erro:
HTTP_CODE: 0
ERRO: 35: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Agora iremos fazer a mesma chamada em um servidor rodando PHP 7.0 utilizando OpenSSL/1.0.2o:
HTTP_CODE: 302
Sem Erro!
Mas como vou saber se meu servidor é compatível?
Faça uma chamada GET para https://www.howsmyssl.com/a/check, será indicado qual a versão mais recente ativa no TLS do seu servidor:
<?php
$ch = curl_init('https://www.howsmyssl.com/a/check');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
$json = json_decode($data, true);
curl_close($ch);
echo "tls_version: " . $json["tls_version"];
?>
No parametro tls_version será indicado a versão do TLS ativa.
Segue teste no PHP 5.2:
tls_version: TLS 1.0
E teste no PHP 7.0:
tls_version: TLS 1.2
Mas e se tenho uma aplicação Rodando PHP 5.2 e quero utilizar o TLS 1.2? Ai você vai começar a ver o problema.
Para utilizar o TLS 1.2 você precisar possuir o OpenSSL ≥ 1.0.1c, e para atualizar o OpenSSL você precisa atualizar o PHP!
Então comece logo a atualizar suas aplicações antigas!
Por hoje é isto, queridos desenvolvedores! 👩💼
Até logo! 👋
Leia também
API Mágica: notificações Web Push no navegador com PHP
Web Push com a API Mágica em PHP puro: o navegador se inscreve, o seu site envia a notificação e a API conta o clique. Sem Composer e sem biblioteca.
IndexNow: avisando o Bing e o Yandex mais rápido
Como criar a chave do IndexNow e avisar Bing e Yandex das suas páginas novas com Node.js e PHP: as requisições, os erros reais e as armadilhas.
llms.txt: por que importa e como gerar em PHP
Por que o llms.txt importa para quem quer ser citado pela IA, e como gerar o seu em PHP puro lendo o sitemap.xml que voce ja tem.