Ter classificação A+ no teste SSL da Qualys

Com as notícias da NSA, as falhas de segurança recentes do OpenSSL (Hearthbleed e POODLE) e os futuros erros a serem apresentados por alguns browsers em certificados emitidos com SHA-1 os utilizadores de sites com SSL vão ficando com cada vez mais receio sobre a segurança e confidencialidade dos seus dados.

Com este guia é possível ter uma classificação mais alta no teste da Qualys e melhorar a segurança e confiança dos utilizadores num website com SSL.

Classificação A+ no teste da Qualys para o Mais Gasolina

Os passos que irem indicar aplicam-se a um servidor com CPanel/WHM e Apache 2.4, configuração que estou a correr no servidor onde se encontra o Mais Gasolina.

O código do site foi totalmente rescrito com performance, segurança e privacidade em mente. Todas as informações pessoais dos utilizadores encontram-se encriptadas na base de dados, mas isso não chega. Com o aumento de utilizadores a aceder através de redes wifi abertas a segurança é comprometida se o acesso não for feito por HTTPS.

O teste da Qualys permite ver como se encontra a configuração de um servidor e o estado do certificado, ajudando a perceber se a nossa configuração é a correcta e se vai funcionar nos browsers mais utilizados. Podem consultar o resultado do Mais Gasolina que está em A+. Poderia ser melhor, mas iria bloquear o acesso a utilizadores com Android 2.3 que ainda são uma fatia considerável nos acessos com Android ao site.

Emitir o certificado em SHA-2

O certificado e os respectivos CAs devem ser actualizados para SHA-2. Caso o certificado ainda esteja emitido em SHA-1 este é o primeiro passo a efectuar.

O artigo Actualizar certificados de SHA-1 para SHA-2 explica como o fazer e instalar.

Actualizar as cifras no Apache

Através do Web Hosting Manager em Service Configuration > Apache Configuration > Global Configuration é necessário definir o parâmetro SSL Cipher Suite com o seguinte:

1
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

Esta é a cifra que estou a utilizar e, embora não seja perfeita, permite o acesso a clientes com Android 2.3 sem comprometer a segurança do servidor com suporte a Forward Secrecy.

O parâmetro SSL/TLS Cipher Suite também deve ser alterado, caso ainda não tenham alterado é muito provável que o servidor esteja exposto ao POODLE.

1
All -SSLv2 -SSLv3

Isto irá permitir que todos os protocolos, excepto SSLv2 e v3 possam ser usados no servidor. Ficam assim activas as versões 1.0, 1.1 e 1.2 do TLS.

Bloquear ataques com renegociação do protocolo e compressão

No Web Hosting Manager em Service Configuration > Apache Configuration > Include Editor adicionamos ao Pre Main Include no ficheiro All versions o seguinte:

1
2
SSLHonorCipherOrder On
SSLCompression off

Isto vai bloquear os ataques quando é utilizado um protocolo inferior ao mais recente suportado pelo browser. Ao desactivar a compressão do SSL bloqueamos também os ataques BREACH e CRIME. Não confundir com a compressão de um website, esta continua activa.

Activar HSTS

Ainda no Web Hosting Manager em Service Configuration > Apache Configuration > Include Editor adicionamos ao Pre VirtualHost Include no ficheiro All versions o seguinte:

1
2
3
<IfModule mod_headers.c>
Header add Strict-Transport-Security "max-age=15768000;includeSubDomains" env=HTTPS
</IfModule>

Isto vai adicionar o header Strict-Transport-Security a todos os websites que são acedidos por HTTPS. É necessário ter o mod_headers instalado, pode ser facilmente adicionado através do EasyApache no WHM.

 

Espero que esta configuração seja útil. É possível que não funcione em todos os sistemas, mas foi o que utilizei no Mais Gasolina para obter a classificação A+ no teste com o CPanel/WHM e o Apache 2.4.

Estas alterações são todas feitas pelo interface do Web Hosting Manager para evitar que sejam perdidas em futuras actualizações, situação comum quando se edita os ficheiros manualmente.

Actualização a 16/05/2017:
Actualizadas as cifras para incluir ChaCha20 e remover algumas cifras consideradas fracas
 
Copyright © 1985 - 2017 Eduardo Maio. Alguns direitos reservados.
eduardomaio.net - Às vezes mais valia ser Agricultor do que Programador
Ao navegar no blog eduardomaio.net está a concordar com os termos legais e de privacidade.