Il certificato SSL ha ricevuto una chiave SSL Diffie-Hellman poco efficace: come risolvere il problema
In alcuni casi, ad esempio quando il certificato SSL non è stato installato correttamente sul server, il seguente messaggio di errore viene visualizzato sul browser: "An error has occurred while connecting to www.site.com. SSL received a weak ephemeral key Diffie-Hellman in the handshake message "Exchange keys server." (codice errore: ssl_error_weak_server_ephemeral_dh_key).
La pagina che stai tentando di aprire non può essere visualizzata perché non è possibile verificare l'autenticità dei dati ricevuti. Contatta i proprietari del sito web per segnalare il problema.
Quest'ultimo si verifica perché il server sta tentando di stabilire una connessione sicura utilizzando una chiave di crittografia poco efficace (inferiore a 1.024 bit). La dimensione consigliata della chiave di crittografia è 2.048 bit. Il modo più semplice per generare una chiave di crittografia con questa caratteristiche è utilizzare OpenSSL:
Openssl dhparam -out dhparams.pem 2048
Per risolvere il problema su più server, segui queste istruzioni.
Specifica i set di crittografie sicuri Definisci i parametri appropriati per l'algoritmo Diffie-Hellman
Soluzione per Apache
I parametri SSL possono essere definiti a livello globale nel file httpd.conf o negli host virtuali specifici
Cipher sets
Disabilita il supporto per SSLv2 e SSLv3 e abilita il supporto per TLS autorizzando esplicitamente o disattivando alcune crittografie nell'ordine specificato:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
Diffie-Hellman parameters:
Nelle versioni recenti di Apache (2.4.8 e versioni superiori), e su OpenSSL 1.0.2 e versioni superiori, puoi specificare direttamente un file con i parametri Diffie-Hellman:
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Se utilizzi Apache con LibreSSL, Apache 2.4.7 o OpenSSL 0.9.8a o versioni superiori, puoi aggiungere i parametri Diffie-Hellman generati in precedenza alla fine del file del certificato.
Perform the config reset:
Sudo service apache2 reload
Soluzione per Nginx
Nel blocco del server nella configurazione del sito (/etc/nginx/sites-enabled/default) aggiungi quanto segue:
Cipher sets:
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
Diffie-Hellman parameters
Ssl_dhparam {path to dhparams.pem}
Reload config:
Sudo nginx -s reload
Microsoft IIS
1. Apri Editor oggetti Criteri di gruppo (esegui gpedit.msc nella riga di comando).
2. Vai su Configurazione computer, Modelli amministrativi, Rete e seleziona Impostazioni di configurazione SSL.
3. Nella sezione Impostazioni di configurazione SSL, apri il parametro Ordine dei pacchetti di crittografia SSL.
4. Imposta delle crittografie stabili. L'elenco delle crittografie è disponibile sul sito web di Microsoft o sulla pagina di Mozilla.
Lighttpd
Le modifiche vengono effettuate a /etc/lighttpd/lighttpd.conf.
Cipher sets:
ssl.cipher-list = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA "
Diffie-Hellman parameters
Ssl.dh-file = "{path to dhparams.pem}"
Reset config:
Sudo service lighttpd restart
Apache Tomcat
Nel file server.xml (per JSSE)
Cipher sets:
<Connector
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA"
/>
Nota: per utilizzare le crittografie AES 256-bit, devi installare i file dei criteri di JCE Unlimited Strength Jurisdiction, disponibili al seguente link.
Postfix SMTP
Entrambi i parametri devono essere specificati in /etc/postfix/main.cf.
Cipher sets:
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
Diffie-Hellman parameters
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Reset config:
sudo postfix reload
Sendmail
Le modifiche possono essere apportate nella sezione LOCAL_CONFIG del file /etc/mail/sendmail.mc
Cipher sets:
O CipherList=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Diffie-Hellman parameters
O DHParameters={path to dhparams.pem}
Reset config:
sudo service sendmail restart
Dovecot
Le modifiche possono essere apportate a /etc/dovecot.conf
Cipher sets:
ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_prefer_server_ciphers = yes (Dovecot 2.2.6 o versioni superiori)
Diffie-Hellman parameters:
#regenerates every week
ssl_dh_parameters_length = 2048
Reset config:
sudo doveadm reload
HAProxy
Le modifiche vengono apportate nella sezione globale della configurazione.
Cipher sets:
ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Diffie-Hellman parameters:
Aggiungi la parte inferiore del file .crt file con il parametro Diffie-Hellman generato con OpenSSL.
Nota: anche se l'opzione tune.ssl.default-dh-param consente di specificare la dimensione massima dei numeri primi utilizzati per DHE, l'inserimento di parametri arbitrari nel certificato sovrascrive tali valori.
Reset config:
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Amazon Elastic Load Balancing
L'ultima serie di parametri SSL predefiniti (2015-05) utilizza le crittografie ECDHE, e non DHE, che sono resistenti agli attacchi LogJam. I dettagli sono disponibili nella documentazione.
OpenSSH
Il protocollo SSH è protetto dagli attacchi LogJam, nelle circostanze in cui un hacker può impostare la connessione con una crittografia meno efficace. Tuttavia, numerose implementazioni SSH, tra cui OpenSSH, utilizzano i numeri primi come Oakley Group 2 a 1.024 bit. Questo problema può essere risolto in diversi modi. Il metodo più semplice è chiedere ai clienti di utilizzare l'algoritmo Diffie-Hellman sulle curve ellittiche, in particolare la curva 25519. Per farlo, imposta gli algoritmi di Key Exchange:
KexAlgorithms curve25519-sha256@libssh.org
Se desideri mantenere il supporto dell'algoritmo Diffie-Hellman non ellittico, devi disabilitare il supporto per Group 1 eliminando diffie-hellman-group1-sha1. Puoi lasciare diffie-hellman-group14-sha1, che utilizza i numeri primi a 2.038 bit.
Puoi anche generare nuovi gruppi Diffie-Hellman:
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
In seguito, dovrai reinstallare moduli-2048 nel file moduli di tuo sistema. In Debian/Ubuntu, si trova in /etc/ssh/moduli. Poiché SSH seleziona casualmente i gruppi da questo file, dovrai aggiungere i nuovi gruppi generati nel file moduli, eliminando quelli precedenti.
Per qualsiasi dubbio o domanda, non esitare a contattare il team di supporto di LeaderTelecom utilizzando i dati di contatto indicati sul sito web.