Encontrei diversos tutoriais ensinando como ativar o protocolo HTTPS no Apache utilizando chaves autoassinadas. No entanto, a maioria deles não leva em consideração os cuidados a serem tomados em relação a segurança.
Ativar o protocolo HTTPS ajuda, mas não ter o mínimo de atenção com o Apache e não utilizar chaves criptográficas realmente seguras, pode causar a falsa sensação de segurança.
SSL, TLS e RC4
SSL - Secure Socket Layer - protocolo de criptografia amplamente utilizado para conexões seguras https. No entanto devido as diversas falhas de segurança encontradas, mesmo nas últimas versões, empresas como Google e Mozilla estão desativando o suporte em seus navegadores ao SSL 2 e 3 em favor do TLS (Transport Layer Security). Apesar de as novas versões de navegadores desabilitarem o suporte ao SSL, é dever de quem fornece os serviços fazer sua parte no lado do servidor.
TLS - Transport Layer Security é um protocolo semelhante ao SSL, mas está imune as falhas encontradas no SSL.
RC4 - É um dos algoritmos utilizados em sistemas de criptografia como o SSL e o WEP (redes sem fio). Não é considerado um algoritmo seguro.
Configurações a serem alteradas/adicionadas no Apache
O suporte ao SSL e ao RC4 vem ativados por padrão no Apache. Desative o suporte ao SSL 2 e SSL 3, e a algoritmos de criptografias ultrapassados acrescentando as linhas abaixo ao arquivo de configuração
apache.conf (derivados Debian) ou
httpd.conf (derivados RedHat).
SSLProtocol ALL -SSLv2 -SSLv3 #Desativa o suporte ao SSLv2 e SSLv3
SSLHonorCipherOrder on #Ao escolher o tipo de criptografia, normalmente a configuração do cliente é utilizada. Se essa opção está ativa (on), a configuração do servidor será utilizada.
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
SHA-1 e SHA-2
Os algoritmos de hash SHA são utilizados utilizados por
Autoridades Certificadoras para assinar digitalmente os certificados emitidos. O SHA-1 é o mais utilizado, no entanto, diversas pesquisas apontam que ataques bem sucedidos ao SHA-1 tornam-se cada vez mais prováveis a medida que a capacidade de processamento dos computadores aumenta. Sendo assim, pretende-se extinguir-se o uso de certificados gerados em SHA-1 até janeiro de 2017.
Para quem utiliza um certificado em seu servidor gerado em SHA-1, terá que necessariamente substituí-lo por um gerado em SHA-2 mesmo que este ainda esteja dentro da validade. O Google, por exemplo, anunciou recentemente que pretende adicionar alertas de segurança em seu navegador para sites que utilizem certificados SHA-1 em conexões seguras.
A família de algoritmos SHA-2 inclui seis funções de valores hash que são conhecidos como: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
Gerando um certificado auto assinado SHA-2
Você pode gerar seu próprio certificado com SHA-2 auto assinado e adicioná-lo no apache. Gere o certificado com os comandos abaixo.
Gera o repositório de chaves:
# openssl genrsa -out server.key 2048
Gera o novo certificado autoassinado utilizando o repositório de chaves (após o comando entre com as informações de país, estado, cidade etc).
Obs.: diminua o parâmetro -days para diminuir o tempo de validade do certificado.
# openssl req -x509 -nodes -days 3650 -new -sha256 -keyout server.key -out certificado.crt
Exibe informações do certificado:
# openssl x509 -in certificate.crt -text -noout