Múltiplos parâmetros DH / ECDH no arquivo de configuração do Apache 2.4.7

5

Estou executando o Apache 2.4.7 em um servidor Ubuntu 14.04 ("Trusty"). O identificador de pacote específico do Ubuntu é "2.4.7-1ubuntu4.1".

Se não especificar explicitamente os parâmetros DH / ECDH (veja abaixo), o Apache usa os parâmetros DH padrão de RFC 3526 para log discreto DH. A duração do parâmetro é correspondida ao comprimento da chave pública RSA (por exemplo, uma chave RSA de 2048 bits obtém um parâmetro DH de 2048 bits, a chave RSA de 4096 bits obtém um parâmetro DH de 4096 bits, etc.).

Parece que somente o cuvete NIST P-256 é usado para ECDH, independentemente do tamanho da chave pública RSA ou ECDSA.

A documentação do Apache indica que, além do certificado SSL de um site, um pode especificar manualmente os parâmetros DH ou ECDH no arquivo referenciado pela diretiva SSLCertificateFile no arquivo de configuração de um site.

O texto exato da entrada relevante nos documentos é:

Additional optional elements are DH parameters and/or an EC curve name for ephemeral keys, as generated by openssl dhparam and openssl ecparam, respectively (supported in version 2.4.7 or later) and finally, the end-entity certificate's private key.

No entanto, parece que o Apache apenas lê o primeiro DH e os primeiros parâmetros ECDH declarados dessa maneira. Conjuntos adicionais de parâmetros declarados nesse arquivo são ignorados.

É possível declarar vários conjuntos de parâmetros para que os clientes possam escolher qual deles usar para DH / ECDH?

Especificamente, gostaria de declarar várias curvas elípticas aceitáveis para ECDH.

Por exemplo, eu gostaria de ter secp256r1 disponível por motivos de compatibilidade, mas também oferecer secp384r1 e secp521r1 para clientes que suportam essas curvas.

Além disso, seria interessante ter parâmetros DH de 1024 bits disponíveis para clientes legados, mas parâmetros de 2048 bits ou superiores para clientes mais novos que suportem primos mais longos.

É possível declarar vários conjuntos de parâmetros DH e ECDH e simplesmente estou omitindo alguma coisa, ou é possível declarar explicitamente um conjunto de parâmetros DH e ECDH, respectivamente?

    
por heypete 26.01.2015 / 13:11

3 respostas

3

Não há como fazer isso para DH não-EC.

Para ECDH:

SSLOpenSSLConfCmd ECDHParameters prime256v1
SSLOpenSSLConfCmd Curves brainpoolP512r1:secp521r1:brainpoolP384r1:secp384r1:brainpoolP256r1:prime256v1
    
por 25.03.2015 / 00:44
2
  1. Parâmetros DH - Isso se aplica somente se você planeja usar um DHE_RSA_<insert cipher here> . Se você não planeja usar nenhuma dessas cifras, o ponto é discutível
  2. EC Params - Você é necessário para atualizar para o Apache 2.4.8 ou superior e ter o OpenSSL 1.0.2 ou superior. Nenhum dos dois vem no Ubuntu 14.04.x. Você precisará fazer:

    apt-add-repository ppa:ondrej/apache2 #corrected
    apt-get update
    apt-get upgrade openssl
    apt-get upgrade apache2
    

Quando você estiver nas últimas bibliotecas Apache2 e OpenSSL, poderá atualizar as cifras do EC adicionando a seguinte linha dentro do seu contêiner <VirtualHost *:443> :

SSLOpenSSLConfCmd Curves secp384r1

Se você quiser mais de uma curva:

SSLOpenSSLConfCmd Curves secp384r1:secp521r1

Em seguida, bata o serviço:

service apache2 restart
    
por 09.12.2015 / 22:40
1

Se você estiver usando o apache 2.4.7 e o OpenSSL 0.9.8a ou posterior, você pode modificar os parâmetros DH anexando o arquivo dhparam ao final dos arquivos de certificado.

Nenhuma ideia sobre parâmetros CE ...

    
por 06.07.2016 / 09:56