Re: Хотел бы сделать такие правила для SSL:

Igor A. Ippolitov iippolitov на nginx.com
Пт Мар 30 14:00:34 UTC 2018


Сергей,

Если очень нужно, есть вариант использовать stream модуль для 
определения протокола, который хочет/может клиент.
И в зависимости от клиента уже проксировать в разные бэкенды, где 
терминировать SSL.

Вариантов как это сделать два:
1) можно запатчить ssl preread, чтобы он экспортил переменные с 
протоколом. Теоретически, патч будет несложным (client hello уже 
разбирается для получения SNI)
2) с помощью nsj попарсить поступающие данные, чтобы установить 
переменную, по которой определить бэкенд ( 
http://nginx.org/ru/docs/stream/ngx_stream_js_module.html#js_preread )

Оба вариант, скажем,  далеки от идеала, но результата достичь позволяют.

On 28.03.2018 19:06, Дугин Сергей wrote:
> Здравствуйте, Maxim.
>
> У того же яндекса, видно что есть свой порядок
> https://www.ssllabs.com/ssltest/analyze.html?d=m.market.yandex.ru&s=87.250.250.22&latest
>
> для SSL3 у них
> TLS_ECDHE_RSA_WITH_RC4_128_SHA
> TLS_RSA_WITH_RC4_128_SHA
>
> для для других протоколов другие совсем шифры.
>
> Вот цитата сотрудников яндекса
> "Наконец,  для  несчастных  с  Internet  Explorer 6 на XP мы сохраняем
> шифры RC4 — других вариантов на этой платформе просто нет. При этом мы
> осознаем  вероятность  того, что этот шифр уязвим, поэтому доступен он
> только в случае хендшейка по протоколу SSLv3. Если клиент подключается
> с  более  современным  протоколом  —  TLS  1.0,  TLS 1.1 или TLS 1.2 —
> ciphersuite на основе RC4 не предлагается."
>
> Очень хотелось бы сделать похожее, но как ?
>
>
> В nginx+ есть такая возможность?
>
>
> и 28 марта 2018 г., 15:58:03:
>
>> Hello!
>> On Wed, Mar 28, 2018 at 03:38:57AM +0300, Дугин Сергей wrote:
>>> Хотел бы сделать такие правила для SSL:
>>>
>>>      ssl_session_cache shared:TLS:10m;
>>>      ssl_session_timeout 10m;
>>>      ssl_stapling on;
>>>      ssl_stapling_verify on;
>>>      resolver 127.0.0.1;
>>>      ssl_prefer_server_ciphers on;
>>>      ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
>>>
>>>      if ($ssl_protocol ~* 'TLSv1.2')
>>>      {
>>>        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA;
>>>      }
>>>      if ($ssl_protocol ~* 'TLSv1.1')
>>>      {
>>>        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA;
>>>      }
>>>      if ($ssl_protocol ~* 'TLSv1')
>>>      {
>>>        ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA;
>>>      }
>>>      if ($ssl_protocol ~* 'SSLv3')
>>>      {
>>>        ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES256-SHA:AES128-SHA:RC4-SHA;
>>>      }
>>>
>>> Основная  мысль  на  свой  протокол  выдавать  свой  список шифров, но
>>> ssl_ciphers нельзя использовать в if условии получаю такую ошибку:
>>>
>>> nginx: [emerg] "ssl_ciphers" directive is not allowed here in /etc/nginx/nginx.conf:77
>>>
>>> Подскажите как можно сделать свой порядок шифров на свой протокол?
>> Никак.
>
>
>



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