Configurações do SSLCipherSuite no Apache para dar suporte ao 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 SSLCipherSuitelinha. Funcionou bem por um tempo, mas os usuários estão relatando problemas ao acessar a página no Firefox. Pedir aos usuários que troquem de navegador infelizmente não é uma opção, portanto, preciso alterar as configurações para dar suporte ao 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 o 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, TLS 1.1 e TLS 1.2, para que o site possa suportar navegadores mais antigos e também manter um nível decente de segurança?

Kristian
fonte

Respostas:

13

A seguinte configuração é (ou costumava ser) a melhor configuração de acordo com o 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, excluirá todos os navegadores mais antigos (incluindo o Opera Mini!), Porque não possui conjuntos de cifras que não sejam 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 RC4 sem o 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. O RC4 está quebrado e não deve mais ser usado, especialmente sem o PFS.

Para obter notas melhores, envie também um cabeçalho HSTS (para que isso funcione, é necessário ativar mod_header):

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

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

Atualização :
Apenas marcada, ainda é boa para o A +. :) Porém, acredito que isso requer um certificado com SHA256.

Atualização em outubro de 2015 :
Encontrei recentemente outro gerador para configurações SSL , fornecido pela Mozilla. Ele solicita cifras para que o Chrome não diga que você está usando um conjunto de códigos descontinuado.

Daniel B
fonte
3

Encontrei esta recomendação no 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)" 
Kristian
fonte
3
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

Desativar os conjuntos de cifras SSLv3 desativa todos os conjuntos de cifras introduzidos no SSL3.0. Como esses conjuntos de cifras também são usados ​​com versões SSL posteriores (TLS1.0 +) e os novos conjuntos de cifras foram introduzidos principalmente com o TLS1.2, essa configuração torna o TLS1.0 e o TLS1.1 indisponíveis por falta de cifras compartilhadas. Assim, o protocolo é efetivamente restrito ao TLS1.2.

Se você telefonasse openssl ciphers -V <cipher>com sua cadeia de caracteres de código, veria que todas as cifras disponíveis requerem TLS1.2.

Por exemplo: openssl ciphers -V TLSv1.2.

Steffen Ullrich
fonte
0

Consulte Diretiva SSLOpenSSLConfCmd na configuração do Apache 2.4 .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

James B
fonte