Я настраиваю nginx (v1.16.1, OpenSSL 1.1.1) для использования https. Я использую сертификат letsencrypt - SHA-256 с шифрованием RSA. Использую TLSv1.2, тестирую на ssllabs и observatory. Предписанное шифрование следующая строка
ssl_ciphers DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
Я тестирую и получаю, что обнаруживается только ECDHE. Пробовал разные комбинации.
Проблема в том, что мне нужно шифрование для корректной работы с IE11 в версиях Win 7 и Win 8.1, а при тестировании выдает ошибку
"Сервер отправил фатальное предупреждение: handshake_failure"
Если на тех же ssllabs я вижу поддерживаемые сертификаты для IE11 Win7, то указывается поддержка, которую я пытаюсь использовать.
LS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
Если я укажу несколько дополнительных поддерживаемых типов шифрования, тогда все будет хорошо, но все остальные методы шифрования СЛАБЫЕ.
OpenSSL поддерживает этот тип шифра
$ openssl ciphers -v | grep DHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
Конфиг:
server {
listen 443 ssl http2;
server_name test.ru;
ssl_protocols TLSv1.2;
ssl_certificate /etc/nginx/conf.d/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/privkey.pem;
ssl_ciphers DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000" always;
location / {
proxy_pass http://192.168.1.2;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_ssl_name test.ru;
proxy_set_header Host $http_host;
proxy_pass_header Set-Cookie;
}
Что может быть причиной?
Вам нужно установить ssl_dhparam
(видеть https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam) для работы шифров DHE на nginx.
Цитата из документации:
По умолчанию параметры не заданы, поэтому шифры DHE использоваться не будут.