Protokol SSL obdržel slabý efemérní klíč Diffie-Hellman: jak tento problém vyřešit?
V některých případech, například pokud není na serveru správně nainstalován certifikát SSL, se v prohlížeči zobrazí následující varovná zpráva: Při připojování k webu www.site.com došlo k chybě. SSL obdržel slabý efemerní klíč Diffie-Hellman ve zprávě handshake " Výměna klíčů serveru". (Kód chyby: ssl_error_weak_server_ephemeral_dh_key).
- Stránku, kterou se snažíte otevřít, nelze zobrazit, protože se nepodařilo ověřit pravost přijatých dat.
- Kontaktujte prosím majitele webových stránek a upozorněte je na tento problém.
Důvodem tohoto problému je, že se server pokouší navázat zabezpečené připojení pomocí slabého šifrovacího klíče (méně než 1024 bitů). Doporučená velikost šifrovacího klíče je 2048 bitů. Nejjednodušší způsob, jak vygenerovat takto vylepšený šifrovací klíč, je použít protokol OpenSSL:
Openssl dhparam -out dhparams.pem 2048
Chcete-li vyřešit problém s různými servery, postupujte podle následujících kroků:
- Určete bezpečné sady šifer.
- Definujte vhodné parametry pro Diffieho-Hellmanův algoritmus.
Řešení pro Apache:
Parametry SSL lze definovat globálně v souboru httpd.conf nebo v konkrétních virtuálních hostitelích.
Cipher sets
Zakázat podporu SSLv2 a SSLv3 a povolit podporu TLS explicitním povolením/zakázáním určitých šifer v zadaném pořadí:
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:
V posledních verzích Apache (2.4.8 a vyšší) a OpenSSL 1.0.2 a novějších lze soubor s parametry Diffie-Hellman zadat přímo:
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Pokud používáte Apache s LibreSSL nebo pracujete s verzemi Apache 2.4.7 nebo OpenSSL 0.9.8a nebo novějšími, můžete na konec souboru certifikátu přidat dříve vygenerované parametry Diffie-Hellman.
Proveďte reset konfigurace:
Sudo service apache2 reload
Řešení pro Nginx
Do bloku serveru v konfiguraci webu (/etc/nginx/sites-enabled/default) přidejte následující:
Šifrové sady:
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-Hellmanovy parametry
Ssl_dhparam {path to dhparams.pem}
Znovu načíst konfiguraci:
Sudo nginx -s reload
Microsoft IIS
1. Otevřete Editor objektů zásad skupiny (v příkazovém řádku spusťte soubor gpedit.msc).
2. Přejděte do části Konfigurace počítače, Šablony pro správu, Síť a klikněte na položku Nastavení konfigurace SSL.
3. V části Nastavení konfigurace SSL otevřete parametr Pořadí šifrovací sady SSL.
4. Nastavení stabilních šifer. Seznam šifer si můžete prohlédnout na webu společnosti Microsoft nebo na stránce Mozilly.
Lighttpd
Změny jsou provedeny v souboru /etc/lighttpd/lighttpd.conf.
Šifrové sady:
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-Hellmanovy parametry
Ssl.dh-file = "{path to dhparams.pem}"
Obnovení konfigurace:
Sudo service lighttpd restart
Apache Tomcat
V souboru server.xml (pro JSSE)
Šifrové sady:
<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"
/>
Poznámka: Chcete-li používat 256bitové šifry AES, musíte nainstalovat soubory zásad neomezené síly JCE. Najdete je na následujícím odkazu.
Postfix SMTP
Oba parametry musí být zadány v souboru /etc/postfix/main.cf.
Šifrové sady:
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-Hellmanovy parametry
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Obnovení konfigurace:
sudo postfix reload
Sendmail
Změny lze provést v sekci LOCAL_CONFIG souboru /etc/mail/sendmail.mc.
Šifrové sady:
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-Hellmanovy parametry
O DHParameters={path to dhparams.pem}
Reset config:
sudo service sendmail restart
Dovecot
Změny lze provést v souboru /etc/dovecot.conf
Šifrové sady:
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 or greater)
Diffie-Hellmanovy parametry:
#regeneruje každý týden
ssl_dh_parameters_length = 2048
Obnovení konfigurace:
sudo doveadm reload
HAProxy
Změny se provádějí v globální části konfigurace.
Šifrové sady:
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-Hellmanovy parametry:
Přidejte na konec souboru .crt parametr Diffie-Hellman vygenerovaný pomocí OpenSSL.
Poznámka: Navzdory možnosti tune.ssl.default-dh-param, která umožňuje určit maximální velikost prvočísel používaných pro DHE, umístění libovolných parametrů do souboru certifikátu tyto hodnoty přepíše.
Obnovení konfigurace:
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Elastické vyrovnávání zátěže Amazon
Poslední sada předdefinovaných parametrů SSL (2015-05) používá šifry ECDHE, nikoli DHE, které jsou odolné proti útoku LogJam. Podrobnosti naleznete v dokumentaci.
OpenSSH
Protokol SSH je chráněn před útoky LogJam, kdy útočník může přepnout připojení na slabší kryptografii. Mnoho implementací SSH, včetně OpenSSH, však používá prvočísla, například 1024bitovou skupinu Oakley 2. Tento problém však lze řešit několika způsoby. Prvním a nejjednodušším způsobem je přimět zákazníky, aby používali Diffieho-Hellmanův algoritmus na eliptických křivkách. Konkrétně se jedná o křivku 25519. Toho lze dosáhnout nastavením algoritmů výměny klíčů:
KexAlgorithms curve25519-sha256@libssh.org
Pokud chcete i nadále podporovat neeliptický Diffie-Hellmanův algoritmus, musíte zakázat podporu skupiny 1 odstraněním diffie-hellman-group1-sha1. Můžete ponechat diffie-hellman-group14-sha1, který používá 2038bitová prvočísla.
Můžete také generovat nové Diffie-Hellmanovy skupiny:
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
Poté je třeba nainstalovat moduli-2048 do systémového souboru moduli. V Debianu / Ubuntu se nachází v souboru /etc/ssh/moduli. SSH vybírá (náhodným způsobem) skupiny z tohoto souboru, takže musíte do souboru moduli přidat nově vygenerované skupiny s odstraněním starých.
V případě jakýchkoli následných otázek nebo nejasností se neváhejte obrátit na tým podpory společnosti LeaderTelecom pomocí kontaktních údajů uvedených na webových stránkách.