Re: Выбор версии TLS в proxy_ssl_protocols

Maxim Dounin mdounin на mdounin.ru
Пт Ноя 16 11:23:52 UTC 2018


Hello!

On Thu, Nov 15, 2018 at 10:50:15PM +0300, Evgeniy Berdnikov wrote:

>  Есть задача спроксировать соединение до сервера с Exchange 2013,
>  который не умеет TLSv1.2 и выше -- он просто обрывает соединение.
>  Это выяснено с помощью "openssl s_client" перебором ключей -tlsXXX.
>  Openssl с ключами -tls1 и -tls1_1 соединение устанавливает.

[...]

>  Теперь понижаем версию, чтобы получить желаемый коннект: прописываем
>  в конфиге "TLSv1.1" и получаем в логе
> 
> 2018/11/15 21:50:25 [crit] 12454#12454: *1 SSL_do_handshake() failed (SSL: error:141E70BF:SSL routines:tls_construct_client_hello:no protocols available) while SSL handshaking to upstream, client: 192.168.27.13, server: cio.protva.ru, request: "GET /owa/ HTTP/1.1", upstream: "https://172.23.0.4:443/owa/", host: "cio.protva.ru:8080"

[...]

>  То есть вместо изменения версии происходит какая-то внутренняя ошибка
>  "tls_construct_client_hello:no protocols available". Такой же результат
>  получается если указать TLSv1, SSLv3 или несколько версий протокола.
>  Это бага или я что-то упустил?
>  
>  Информация о стендовой системе: Debian/unstable (32bit), пакеты
>  nginx-light_1.14.1-1_i386 и libssl_1.1.1-2_i386.

Проблема в том, что в Debian на системном уровне запрещены 
протоколы меньше TLS 1.2.  Соответственно в вашей конфигурации 
оказываются запрещены вообще все протоколы - об этом и говорит 
ошибка "no protocols available".

Исправить это можно, обновившись на nginx 1.15.3+, где 
соответствующая проблема полечена на уровне nginx[1], либо же 
убрав ограничение в системном конфиге OpenSSL и/или задав для 
nginx'а отдельный конфиг, без соответствующего ограничения.

[1] http://hg.nginx.org/nginx/rev/7ad0f4ace359

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru