Configurações SSLCipherSuite no Apache para suportar o TLS 1.0, 1.1 e 1.2

8

Eu tenho um servidor web Apache 2.4.7 executando vários nomes de domínio usando um único endereço IP. Como resultado da vulnerabilidade do Poodle, adicionei a seguinte linha SSLCipherSuite . Funcionou bem por um tempo, mas os usuários estão relatando problemas com o acesso à página no Firefox. Pedir aos usuários para alternar navegadores não é, infelizmente, uma opção, por isso preciso alterar as configurações para suportar o TLS 1.0, 1.1 e 1.2.

As configurações atuais são:

<VirtualHost ZYX.XYZ.org:443>
DocumentRoot /var/www/ZYX.XYZ/www
ServerName ZYX.XYZ.org

<Directory "/var/www/ZYX.XYZ/">
  allow from all
  Options -Indexes
</Directory>

SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
SSLCertificateFile /etc/apache2/ssl/XYZ.org.crt
SSLCertificateKeyFile /etc/apache2/ssl/XYZ.org.key
SSLCACertificateFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
</VirtualHost>

Se olharmos para teste da Qualys , vemos que o servidor suporta apenas o TLS 1.2.

Quais seriam as configurações apropriadas para ativar o TLS 1.0, o TLS 1.1 e o TLS 1.2, para que o site possa oferecer suporte a navegadores mais antigos e também manter um nível decente de segurança?

    
por Kristian 25.02.2015 / 22:15

4 respostas

10

A seguinte configuração é (ou costumava ser) a melhor configuração de acordo com SSLLabs:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA"

No entanto, ele excluirá todos os navegadores mais antigos (incluindo o Opera Mini!), porque não possui conjuntos de cifras não-PFS e RC4. Você pode anexar o seguinte (antes da cotação de fechamento, é claro) para ativar o RC4, incluindo um fallback (última entrada) para o RC4 sem PFS:

:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:RC4-SHA

Você deve incentivar os usuários a atualizar o mais rápido possível. RC4 está quebrado e não deve mais ser usado, especialmente sem PFS.

Para obter melhores notas, envie também um cabeçalho de HSTS (para que isso funcione, você precisa ativar mod_header ):

Header always set Strict-Transport-Security "max-age=63072000;"

Esta configuração não funcionará para o Apache < 2.2.26, porque não suporta criptografia de curva elíptica.

Atualizar :
Acabei de verificar, ainda é bom para A +. :) Eu acredito que isso requer um certificado com SHA256, embora.

Atualização de outubro de 2015 :
Recentemente encontrei outro outro gerador para configurações SSL , fornecido pela Mozilla. Ele solicita criptografias para que o Google Chrome não diga que você está usando um conjunto de criptografia obsoleto.

    
por 25.02.2015 / 22:28
3

Encontrei esta recomendação em Cipherli.st :

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off 
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 
    
por 27.02.2015 / 15:50
3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

A desativação dos conjuntos de cifras SSLv3 desativa todos os conjuntos de cifras introduzidos com SSL3.0. Como esses conjuntos de cifras também são usados com versões posteriores de SSL (TLS1.0 +) e novos conjuntos de cifras foram introduzidos com o TLS1.2, essa configuração torna o TLS1.0 e o TLS1.1 indisponíveis devido a nenhuma cifra compartilhada. Assim, o protocolo é efetivamente restrito ao TLS1.2.

Se você chamasse openssl ciphers -V <cipher> com sua string de criptografia, veria que todas as cifras disponíveis requerem TLS1.2.

Por exemplo: openssl ciphers -V TLSv1.2 .

    
por 25.02.2015 / 22:57
1

Consulte a Diretiva SSLOpenSSLConfCmd na Configuração do Apache 2.4 .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

    
por 17.11.2016 / 14:52