Рейтинг:1

Nginx не может принять рукопожатие TLS, когда клиент не отправляет расширения TLS

флаг in

Nginx настроен как балансировщик нагрузки и имеет сертификат сервера, установленный для завершения рукопожатия TLS для соединений MQTT. Это работает, когда расширения TLS включаются в clientHello во время рукопожатия, но есть другие клиенты, работающие со старым кодом, которые не отправляют расширения TLS в clientHello. В этом случае я обнаружил, что Nginx будет выдавать ошибки, как в

Ошибка SSL_do_handshake() (SSL: ошибка: 14201044: подпрограммы SSL: tls_choose_sigalg: внутренняя ошибка) при квитировании SSL, клиент: x.x.x.107, сервер: 0.0.0.0:8883

Вот захват Wireshark

clientHello без расширений

Мне кажется, Nginx ожидает, по крайней мере, расширение подписи alorightms. Мой вопрос: можно ли настроить Nginx для принятия рукопожатия TLS, когда клиент не использует расширения?

Конфигурация потока Nginx находится здесь (показывать только связанные с TLS):

апстрим-брокеры{
    сервер 127.0.0.1:18831;
    сервер 127.0.0.1:18832;
    сервер 127.0.0.1:18833;

    зона tcp_mem 64k;
    хэш $mqtt_client_id согласован; 
}
сервер {
    слушать 8883 ssl;  
    preread_buffer_size 1k;

    ssl_certificate /etc/nginx/certs/server.pem;
    ssl_certificate_key /etc/nginx/certs/server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    общий ssl_session_cache: SSL: 128 м;  
    ssl_session_tickets включен;
    ssl_session_timeout 8 часов;
    ssl_verify_client выключен;
    ssl_prefer_server_ciphers выключен;    
 
    брокеры proxy_pass;
    proxy_connect_timeout 5 с;
    журнал_доступа /var/log/nginx/mqtt_access.log mqtt;
    error_log /var/log/nginx/mqtt_error.log отладка;  
}

Вот захват wireshark, когда клиенты отправляют расширения в clientHello:

clientHello включает расширения

Z Wang avatar
флаг in
Оказалось, что уровень безопасности openssl по умолчанию запрещает ключи RSA меньше 2048 бит в шифрах. После настройки уровня безопасности проблема решена.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.