SSL je prejel šibek efemerni Diffie-Hellmanov ključ: kako rešiti to težavo
V nekaterih primerih, na primer ko potrdilo SSL ni pravilno nameščeno v strežniku, se v brskalniku prikaže naslednje opozorilno sporočilo: Pri vzpostavljanju povezave s spletnim mestom www.spletno-mesto.com je prišlo do napake. SSL je prejel šibek efemerni Diffie-Hellmanov ključ v sporočilu za izmenjavo ključev »Exchange keys server«. (Koda napake: ssl_error_weak_server_ephemeral_dh_key).
- Strani, ki jo poskušate odpreti, ni mogoče prikazati, ker ni bilo mogoče preveriti pristnosti prejetih podatkov.
- Obrnite se na lastnike spletnih strani in jih obvestite o tej težavi.
Razlog za to težavo je, da strežnik poskuša vzpostaviti varno povezavo z uporabo šibkega šifrirnega ključa (manj kot 1024 bitov). Priporočena velikost šifrirnega ključa je 2048 bitov. Takšen izboljšan šifrirni ključ najlažje ustvarite z uporabo OpenSSL:
Openssl dhparam -out dhparams.pem 2048
Če želite rešiti težavo z različnimi strežniki, uporabite ta postopek:
- Določite varne nabore šifer
- Določite ustrezne parametre za Diffie-Hellmanov algoritem
Rešitev za Apache:
Parametri SSL so lahko globalno opredeljeni v datoteki httpd.conf ali v določenih virtualnih gostiteljih.
Nabori šifer
Onemogočite podporo SSLv2 in SSLv3 ter omogočite podporo TLS z izrecno odobritvijo/izključitvijo določenih šifer v določenem vrstnem redu:
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-Hellmanovi parametri:
V zadnjih različicah strežnika Apache (2.4.8 in novejših) ter OpenSSL 1.0.2 in novejših lahko neposredno določite datoteko z Diffie-Hellmanovi parametri:
SSLOpenSSLConfCmd DHParameters "{pot do dhparams.pem}"
Če uporabljate Apache z LibreSSL ali delate z različicami Apache 2.4.7 ali OpenSSL 0.9.8a ali novejšimi, lahko prej ustvarjene Diffie-Hellmanove parametre dodate na konec datoteke potrdila.
Izvedite ponastavitev konfiguracije:
Sudo service apache2 reload
Rešitev za Nginx
V blok strežnika v konfiguraciji spletnega mesta (/etc/nginx/sites-enabled/default) dodajte naslednje:
Nabori šifer:
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-Hellmanovi parametri
Ssl_dhparam {po do dhparams.pem}
Ponovno naložite konfiguracijo:
Sudo nginx -s reload
Microsoft IIS
1. Odprite Group Policy Object Editor (v ukazni vrstici zaženite gpedit.msc).
2. Pojdite v Computer Configuration, Administrative Templates, Network in kliknite SSL Configuration Settings.
3. V razdelku SSL Configuration Settings odprite parameter SSL Cipher Suite Order.
4. Nastavite stabilne šifre. Seznam šifer si lahko ogledate na Microsoftovem spletnem mestu ali na strani Mozilla.
Lighttpd
Spremembe opravite v datoteki /etc/lighttpd/lighttpd.conf.
Nabori šifer:
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-Hellmanovi parametri
Ssl.dh-file = "{path to dhparams.pem}"
Ponastavitev konfiguracije:
Sudo service lighttpd restart
Apache Tomcat
V datoteki server.xml (za JSSE)
Nabori šifer:
<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"
/>
Opomba: Če želite uporabljati 256-bitne šifre AES, morate namestiti datoteke JCE Unlimited Strength Jurisdiction Policy Files. Najdete jih na naslednji povezavi.
Postfix SMTP
Oba parametra je treba navesti v datoteki /etc/postfix/main.cf.
Nabori šifer:
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-Hellmanovi parametri
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Ponastavitev konfiguracije:
sudo postfix reload
Sendmail
Spremembe lahko izvedete v razdelku LOCAL_CONFIG datoteke /etc/mail/sendmail.mc.
Nabori šifer:
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-Hellmanovi parametri
O DHParameters={pot do dhparams.pem}
Ponastavitev konfiguracije:
sudo service sendmail restart
Dovecot
Spremembe lahko vnesete v datoteko /etc/dovecot.conf
Nabori šifer:
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 ali novejši)
Diffie-Hellmanovi parametri:
#regenerates every week
ssl_dh_parameters_length = 2048
Ponastavitev konfiguracije:
sudo doveadm reload
HAProxy
Spremembe opravite v globalnem razdeku konfiguracije.
Nabori šifer:
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-Hellmanovi parametri:
Dodajte na dno datoteke .crt z Diffie-Hellmanovim parametrom, ustvarjene z OpenSSL.
Opomba: Kljub možnosti »tune.ssl.default-dh-param«, ki vam omogoča, da določite največjo velikost praštevil, uporabljenih za DHE, bo namestitev poljubnih parametrov v datoteko potrdila te vrednosti prepisala.
Ponastavitev konfiguracije:
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Amazon Elastic Load Balancing
Zadnji nabor vnaprej določenih parametrov SSL (2015-05) uporablja šifre ECDHE (ne DHE), ki so odporne na napad LogJam. Podrobnosti so na voljo v dokumentaciji.
OpenSSH
Protokol SSH je zaščiten pred napadi LogJam, ko lahko napadalec preklopi povezavo na šibkejšo kriptografijo. Vendar številne izvedbe SSH, vključno z OpenSSH, uporabljajo praštevila, na primer 1024-bitno Oakleyjevo skupino 2. Obstaja več načinov za rešitev te težave. Prvi in najpreprostejši način je, da stranke prepričamo, da uporabljajo Diffie-Hellmanov algoritem na eliptičnih krivuljah, zlasti krivuljo 25519. To lahko storite tako, da nastavite algoritme za izmenjavo ključev:
KexAlgorithms curve25519-sha256@libssh.org
Če želite še naprej podpirati neeliptični Diffie-Hellmanov algoritem, morate onemogočiti podporo za skupino 1 tako, da odstranite diffie-hellman-group1-sha1. Pustite lahko diffie-hellman-group14-sha1, ki uporablja 2038-bitna praštevila.
Ustvarite lahko tudi nove Diffie-Hellmanove skupine:
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
Moduli-2048 morate nato namestiti v sistemsko datoteko moduli. V sistemu Debian/Ubuntu se nahaja v mapi /etc/ssh/moduli. SSH (naključno) izbere skupine iz te datoteke, zato morate v datoteko moduli dodati nove ustvarjene skupine in odstraniti stare.
Če imate kakršna koli nadaljnja vprašanja ali pomisleke, se obrnite na ekipo za podporo LeaderTelecom s podatki za stik, ki so navedeni na spletnem mestu.