Melhores práticas para implementação do TLS


A principal função dos protocolos SSL e TLS é garantir a privacidade e a integridade dos dados que são trocados entre duas aplicações, neste caso estamos falando entre o seu site ou e-commerce e o cliente final. Basicamente esta é a funcionalidade, porém minha ideia não é demonstrar as funcionalidades de ambos os protocolos, mas mostrar as melhores práticas para você configurar o seu servidor de forma correta.

Chave Privada

O primeiro nível de segurança do seu certificado SSL começa na geração da chave privada, você irá definir qual o tamanho da chave criptográfica que será utilizada no servidor e se irá proteger sua chave privada com uma senha de segurança, neste momento:

  • Crie chaves usando no mínimo RSA 2048 bits: esse tipo de chave irá garantir a sua segurança durante um bom tempo, caso você utilize chaves com 1024 bits, considere substituí-las o quanto antes.
  • Defina uma senha de segurança: Criando uma senha ao gerar sua chave privada, irá restringir o acesso a apenas algumas pessoas, o ideal é escolher uma senha forte neste momento. Caso você queira aumentar ainda mais o nível de segurança, você pode escolher dois administradores, sendo cada um responsável por uma parte da senha.
  • Utilize um computador confiável: Quando for gerar a chave privada e a CSR (Certificate Signing Requests)  utilize um computador confiável.
  • Para o armazenamento das chaves privadas, as melhores práticas de segurança aconselham o armazenamento das chaves em hardwares com módulos de criptografia, que são conhecidos como HSM (Hardware Security Module).


Utilize algoritmos fortes

Hoje muitos certificados ainda utilizam e são emitidos com o hash SHA1, que já é considerado inseguro e irá ser substituído até o final de 2016, quando não deverá mais ser aceito. A melhor opção é você já emitir os novos certificados utilizando o hash SHA2, por isso ao solicitar um novo certificado para a sua empresa certificadora, não se esqueça de solicitar que seja emitido como SHA2.

Configuração do servidor

Ao configurar o servidor de forma correta, você irá garantir que o certificado será exibido corretamente para o seu cliente e que você está utilizando protocolos e chaves que são seguras.

Nessa primeira etapa o importante é você escolher quais protocolos serão habilitados em seu servidor HTTPS, hoje temos cinco protocolos: SSL v2, SSL v3, TLS 1.0, TLS 1.1 e TLS 1.2.

Por questão de segurança e devido a diversas vulnerabilidades divulgadas anteriormente a melhor opção é escolher utilizar apenas o protocolo TLS e desabilitar os protocolos SSL. A melhor opção seria apenas utilizar o TLS 1.2, porém devido a compatibilidade com navegadores antigos, você precisará deixar habilitado as versões 1.0 e 1.1.

Além da configuração do protocolo, você precisa ficar atento na configuração das chaves que serão utilizadas no servidor, neste caso a melhor forma de se escolher qual tipo de chave será utilizada é apenas configurar chaves que forneçam criptografia acima de 128 bits, incluindo a exclusão das chaves que utilizam Anonymous Diffie-Hellman (ADH), RC4 e 3DES.

Uma outra configuração importantíssima é desabilitar a opção TLS Compression, que irá prevenir que seu servidor seja alvo de ataques como CRIME e BEAST.
Além disso, é totalmente recomendado que você habilite o HSTS (HTTP Strict Transport Security), pois irá permitir que seu site se torne acessível apenas através de HTTPS.

Caso você não esteja utilizando o HSTS, cuidado com o conteúdo mixado entre HTTP e HTTPS, pois caso o cliente acesse uma área com HTTPS e este código chame um elemento que esteja chamando o protocolo HTTP, isso poderá gerar alertas de segurança.

As opções e configurações apresentadas anteriormente têm como objetivo auxiliar você na aplicação das melhores práticas de segurança para o uso do certificado SSL, sem contar ainda a performance, segurança de cookies ou até mesmo o cache de conteúdo sensível, sendo que todos esses itens também devem ser considerados ao realizar a configuração do seu servidor e/ou aplicação.


Até a próxima.


EmoticonEmoticon