Сергей,

Если очень нужно, есть вариант использовать 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 mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить