Назад | Перейти на главную страницу

Настроить Nginx для поддержки клиентов, которым требуются параметры DH не более 1024, без снижения безопасности для всех остальных?

Веб-инструмент стороннего производителя, который обращается к нашему веб-серверу, похоже, использует Java 6, которая не поддерживает параметры DH> 1024 бит. Он не может подключиться к нашему серверу, потому что у нас установлен файл dhparams на 4096 бит.

В Nginx файл dhparams устанавливается в nginx.conf, используя ssl_dhparam параметр.

Предположительно, если мы регенерируем файл dhparams.pem с 1024 битами, это ослабит безопасность для всех.

Есть ли способ разрешить этому одному устаревшему клиенту подключаться с 1024-битным dhparams, используя 4096 для всех остальных? Чтобы усложнить ситуацию, похоже, что Java 6 не поддерживает SNI.

Есть ли хороший способ справиться с этой ситуацией?

Клиент не объявляет в рукопожатии, какую силу ключа DH он поддерживает, поэтому сервер не может использовать другой ключ DH для разных клиентов. Но ключ DH используется только в том случае, если используются шифры DH. Современные клиенты предпочитают ECDHE, и если ваш nginx принимает это предпочтение, тогда рукопожатие вообще не будет использовать параметр DH, поскольку он будет выполнять не обмен ключами DHE, а обмен ключами ECDHE. Примеры конфигурации, которые предпочитают ECDHE, см. https://mozilla.github.io/server-side-tls/ssl-config-generator/.

Что касается клиентов без SNI: они просто будут использовать хост по умолчанию, настроенный в nginx. Таким образом, если у вас есть соответствующий сертификат, который соответствует всем именам, которые клиент, не знающий SNI, может использовать для подключения к вашему серверу, он должен работать.