SSL получи слаб ефимерен ключ на Diffie-Hellman: как да разрешите този проблем
В някои случаи, като например когато SSL сертификатът не е инсталиран правилно на сървъра, в браузъра ще се появи следното предупредително съобщение: an error has occurred while connecting to www.site.com (възникна грешка при свързване към www.site.com). SSL получи слаб ефимерен ключ на Diffie-Hellman в съобщението на ръкостискане "Exchange keys server.” (Сървър за обмен на ключове). (Код на грешка: ssl_error_weak_server_ephemeral_dh_key).
- Страницата, която се опитвате да отворите, не може да бъде показана, тъй като автентичността на получените данни не може да бъде потвърдена.
- Моля, свържете се със собствениците на уебсайта, за да докладвате този проблем.
Причината зад този проблем е, че сървърът се опитва да установи защитена връзка с помощта на слаб шифроващ ключ (по-малко от 1024 бита). Препоръчителният размер на шифроващия ключ е 2048 бита. Най-лесният начин да генерирате този вид подобрен шифроващ ключ е да използвате OpenSSL:
Openssl dhparam -out dhparams.pem 2048
За да разрешите проблема при различни сървъри, трябва да извършите следните стъпки:
- Посочете защитени набори от шифри
- Определете подходящите параметри за алгоритъма Diffie-Hellman
Решение за Apache:
Параметрите на SSL могат да бъдат глобално дефинирани във файла httpd.conf или в специфични виртуални хостове.
Набори от шифри
Деактивирайте поддръжката на SSLv2 и SSLv3 и активирайте поддръжката на TLS, като изрично разрешите/деактивирате определени шифри в посочената последователност:
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:
В последни версии на Apache (2.4.8 и по-нови версии), както и OpenSSL 1.0.2 и по-нови версии, вие можете директно да посочите файл с параметри на Diffie-Hellman:
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Ако използвате Apache с LibreSSL или ако работите с версии на Apache 2.4.7 или OpenSSL 0.9.8a, или по-нови версии, можете да добавите параметрите на Diffie-Hellman, генерирани по-рано, към края на вашия файл на сертификат.
Извършете нулиране на конфигурацията:
Sudo service apache2 reload
Решението за Nginx
В блока на сървъра в конфигурацията на сайта (/etc/nginx/sites-enabled/default), добавете следното:
Набори от шифри:
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:
Ssl_dhparam {path to dhparams.pem}
Презареждане на конфигурация:
Sudo nginx -s reload
Microsoft IIS
1. Отворете Group Policy Object Editor (Редактор на обекти на групова политика) (изпълнете gpedit.msc в командния ред).
2. Отидете на Computer Configuration (Конфигурация на компютър), Administrative Templates (Административни шаблони), Network (Мрежа), след което щракнете върху SSL Configuration Settings (Настройки на конфигурация на SSL).
3. В раздела SSL Configuration Settings (Настройки на конфигурация на SSL),отворете параметъра SSL Cipher Suite Order (Ред на пакет с шифри за SSL)
4. Задайте стабилни шифри. Можете да прегледате списъка с шифри на уебсайта на Microsoft или на страницата на Mozilla.
Lighttpd
Извършени са промени в /etc/lighttpd/lighttpd.conf.
Набори от шифри:
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:
Ssl.dh-file = “{path to dhparams.pem}"
Нулиране на конфигурация:
Sudo service lighttpd restart
Apache Tomcat
Във файла server.xml (за JSSE)
Набори от шифри:
<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"
/>
Забележка: За да използвате шифрите AES 256 бита, вие трябва да инсталирате JCE файлове с правила за юрисдикция с неограничена сила. Можете да ги намерите на следната връзка.
Postfix SMTP
И двата параметъра трябва да бъдат посочени в /etc/postfix/main.cf.
Набори от шифри:
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:
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Нулиране на конфигурация:
sudo postfix reload
Sendmail
Промените могат да бъдат извършени в раздела LOCAL_CONFIG на файла /etc/mail/sendmail.mc
Набори от шифри:
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:
O DHParameters={path to dhparams.pem}
Нулиране на конфигурация:
sudo service sendmail restart
Dovecot
Промените могат да бъдат извършени в /etc/dovecot.conf
Набори от шифри:
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 или по-нова версия)
Параметри на Diffie-Hellman:
#генерират се повторно всяка седмица
ssl_dh_parameters_length = 2048
Нулиране на конфигурация:
sudo doveadm reload
HAProxy
Промените са извършени в глобалния раздел на конфигурацията.
Набори от шифри:
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:
Добавете най-отдолу на .crt файла с параметъра на Diffie-Hellman, генериран с OpenSSL.
Забележка: въпреки опцията tune.ssl.default-dh-param, която ви позволява да посочите максималния размер на прости числа, използвани за DHE, поставянето на произволни параметри във файла на вашия сертификат ще доведе до презаписване на тези стойности.
Нулиране на конфигурация:
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Amazon Elastic Load Balancing
Последният набор от предварително дефинирани SSL параметри (2015-05) използва шифри ECDHE, и не DHE, които са устойчиви на LogJam атака. Подробности можете да намерите в документацията.
OpenSSH
Протоколът SSH е защитен от LogJam атаки, когато нападател може да превключи връзка към по-слаба криптография. Въпреки това, много реализации на SSH, включително OpenSSH, използват прости числа, например 1024-битова Oakley група 2. Въпреки това, има няколко начина, по които можете да разрешите този проблем. Първият и най-лесният метод е да помолите клиентите да използват алгоритъма на Diffie-Hellman върху елиптични криви. По-специално кривата 25519. Можете да направите това, като зададете алгоритми на обмен на ключове:
KexAlgorithms curve25519-sha256@libssh.org
Ако желаете да продължите поддръжката на неелиптичния алгоритъм на Diffie-Hellman, вие трябва да деактивирате поддръжката на група 1, като премахнете diffie-hellman-group1-sha1. Можете да оставите diffie-hellman-group14-sha1, който използва 2038-битови прости числа.
Можете също да генерирате нови групи на Diffie-Hellman:
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
След това ще трябва да инсталирате moduli-2048 в moduli файла на вашата система. В Debian / Ubuntu се намира в /etc/ssh/moduli. SSH избира (произволно) групите от този файл, така че трябва да добавите новите генерирани групи към moduli файла, като премахнете старите.
Ако имате допълнителни въпроси или притеснения, моля, не се колебайте да се свържете с екипа за поддръжка на LeaderTelecom, като използвате информацията за контакт, предоставена на уебсайта.