Сергей,
Если очень нужно, есть вариант использовать 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