Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Gena Makhomed

On 01.09.2015 17:08, ekassir wrote:


Нужна была доступность протокола TLS 1.0, который используется приложениями,
совместимость с которыми нужно было обеспечить.



В итоге, пришлось для всего списка сайтой прописать TLS 1.0,
чтобы он начал поддерживаться на нужном hostname.



Кто знает, это бага или фича? Как обойти?


Директива ssl_protocols, хоть и указывается в контексте server`а,
на самом деле является свойством listen socket`а, а не server`а.

Потому что клиент сначала устанавливает TLS соединение с сервером,
а только после этого присылает HTTP-запрос в котором указано имя хоста.

Обойти можно просто, сделав различные listen socket`ы
с разными настройками, так чтобы они отличались
или номером порта или IP адресом. Например:

server {
   listen 11.11.11.11:443 ssl;
   ssl_protocols SSLv3;

}

server {
   listen 22.22.22.22:443 ssl;
   ssl_protocols TLSv1.1 TLSv1.2;

}

Есть необязательное расширение TLS протокола - Server Name Indication
https://tools.ietf.org/html/rfc6066#section-3

Но нюанс в том, что server_name там присылается
в не-защищенном виде как ClientHello extension,
И это имя ведь может не совпадать с имемен хоста,
который потом будет прислан по зашифрованному HTTP-протоколу.

https://idea.popcount.org/2012-06-16-dissecting-ssl-handshake/

Кроме того, Server Name Indication extension может и не быть.


Есть идеи, как дебажить?


http://nginx.org/en/docs/debugging_log.html

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность ekassir
Здравствуйте, товарищи.

Критичная проблема, не могу победить уже почти 4 дня. Прошу
квалифицированной помощи.
Nginx используется в качестве reverse-proxy.
Столкнулся с проблемой отсутствия реакции Nginx на конкретные параметры
конфига:

Браузер подключается по TLSv1.2, тогда как в конфиге виртуального сервера
указано, например: 
ssl on;
ssl_protocols   SSLv3;
ssl_prefer_server_ciphers Off; # данный параметр также не влияет на
доступность выбранного протокола

Следующие проверки показывают доступность только TLSv1.1 и TLSv1.2, вне
зависимости от того, какой конфиг прописан:
1) https://www.ssllabs.com/ssltest/
2) openssl s_client -tls1_1 -connect hostname:443 < /dev/null
3) sslyze --regular hostname

Переопределения разрешённых протоколов на уровне nginx.conf нет.
Для каждого проксируемого сервера прописываются свои параметры шифрования,
файлы конфигов лежат в директории sites-enabled.
Думал, что проблема в несовместимости с версией OpenSSL:
"The TLSv1.1 and TLSv1.2 parameters are supported starting from versions
1.1.13 and 1.0.12, so when the OpenSSL version 1.0.1 or higher is used on
older nginx versions, these protocols work, but cannot be disabled."
Собрал из исходников свежую версию. Не помогло.

Вывод nginx -V

nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
--with-http_ssl_module --with-http_realip_module --with-http_addition_module
--with-http_sub_module --with-http_dav_module --with-http_flv_module
--with-http_mp4_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_stub_status_module
--with-http_auth_request_module --with-mail --with-mail_ssl_module
--with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g
-pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic'


Вывод openssl version:
OpenSSL 1.0.1p 9 Jul 2015

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261349,261349#msg-261349

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность ekassir
Проблема обнаружена:
директива ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
работает глобально, а не для каждого отдельного сайта.

Придётся прописывать всё в общем конфиге.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261349,261355#msg-261355

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность ekassir
Есть идеи, как дебажить?

yum update не помог, сейчас по вашему примеру поставлю систему заново.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261349,261352#msg-261352

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Alex Domoradov
Проверил на CentOS 6 и nginx-1.8.0 из репы

# openssl s_client -ssl3 -connect 46.xxx.xxx.xxx:443 -servername
www.example.net
...
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol  : SSLv3
Cipher: ECDHE-RSA-AES128-SHA

# nginx -v
nginx version: nginx/1.8.0

# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
--with-http_ssl_module --with-http_realip_module
--with-http_addition_module --with-http_sub_module --with-http_dav_module
--with-http_flv_module --with-http_mp4_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_stub_status_module
--with-http_auth_request_module --with-mail --with-mail_ssl_module
--with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g
-pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic'

server {
listen   443;
server_name  www.example.net;

ssl on;

ssl_certificate  /etc/pki/nginx/www.example.net.pem;
ssl_certificate_key  /etc/pki/nginx/www.example.net.key;
ssl_dhparam  /etc/pki/nginx/dh2048.pem;

ssl_prefer_server_ciphers   on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv3;
ssl_ciphers
'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:!RC4:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK';

ssl_session_cache shared:SSL:1m;
ssl_session_timeout  5m;

location / {
proxy_pass http://127.0.0.1:8080;
...
}

}

2015-09-01 12:41 GMT+03:00 ekassir :

> Здравствуйте, товарищи.
>
> Критичная проблема, не могу победить уже почти 4 дня. Прошу
> квалифицированной помощи.
> Nginx используется в качестве reverse-proxy.
> Столкнулся с проблемой отсутствия реакции Nginx на конкретные параметры
> конфига:
>
> Браузер подключается по TLSv1.2, тогда как в конфиге виртуального сервера
> указано, например:
> ssl on;
> ssl_protocols   SSLv3;
> ssl_prefer_server_ciphers Off; # данный параметр также не влияет на
> доступность выбранного протокола
>
> Следующие проверки показывают доступность только TLSv1.1 и TLSv1.2, вне
> зависимости от того, какой конфиг прописан:
> 1) https://www.ssllabs.com/ssltest/
> 2) openssl s_client -tls1_1 -connect hostname:443 < /dev/null
> 3) sslyze --regular hostname
>
> Переопределения разрешённых протоколов на уровне nginx.conf нет.
> Для каждого проксируемого сервера прописываются свои параметры шифрования,
> файлы конфигов лежат в директории sites-enabled.
> Думал, что проблема в несовместимости с версией OpenSSL:
> "The TLSv1.1 and TLSv1.2 parameters are supported starting from versions
> 1.1.13 and 1.0.12, so when the OpenSSL version 1.0.1 or higher is used on
> older nginx versions, these protocols work, but cannot be disabled."
> Собрал из исходников свежую версию. Не помогло.
>
> Вывод nginx -V
>
> nginx version: nginx/1.8.0
> built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
> built with OpenSSL 1.0.1e-fips 11 Feb 2013
> TLS SNI support enabled
> configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
> --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
> --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
> --lock-path=/var/run/nginx.lock
> --http-client-body-temp-path=/var/cache/nginx/client_temp
> --http-proxy-temp-path=/var/cache/nginx/proxy_temp
> --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
> --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
> --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
> --with-http_ssl_module --with-http_realip_module
> --with-http_addition_module
> --with-http_sub_module --with-http_dav_module --with-http_flv_module
> --with-http_mp4_module --with-http_gunzip_module
> --with-http_gzip_static_module 

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Pavel Mihaduk
Наблюдал аналогичное поведение на CentOS 5.9, nginx 1.6.* - в контексте server 
директива игнорируется.
> On 1 сент. 2015 г., at 14:09, Alex Domoradov  > wrote:
> 
> А в документации указано
> 
> Контекст: http, server
> 
> У себя проверил, выставил в блоке http - ssl_protocols TLSv1.2; Без 
> изменений, sslv3 принимает
> 
> 2015-09-01 13:55 GMT+03:00 ekassir  >:
> Проблема обнаружена:
> директива ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
> работает глобально, а не для каждого отдельного сайта.
> 
> Придётся прописывать всё в общем конфиге.
> 
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,261349,261355#msg-261355 
> 
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org 
> http://mailman.nginx.org/mailman/listinfo/nginx-ru 
> 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org 
> http://mailman.nginx.org/mailman/listinfo/nginx-ru 
> 
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Gena Makhomed

On 01.09.2015 13:55, ekassir wrote:


Проблема обнаружена:
директива ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
работает глобально, а не для каждого отдельного сайта.
Придётся прописывать всё в общем конфиге.


А зачем может понадобиться запрещать TLSv1.1 и TLSv1.2 ?
Или делать для каждого серверу различную настройку.

https://www.ssllabs.com/ssltest/ наоброт рекомендует,
выключать SSLv3 и включать старшие версии протоколов.

Из некоторых реализаций OpenSSL даже вообще выбросили
поддержку протоколов SSLv2 и SSLv3, оставив только TLS.

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Alex Domoradov
А в документации указано

Контекст: http, server

У себя проверил, выставил в блоке http - ssl_protocols TLSv1.2; Без
изменений, sslv3 принимает

2015-09-01 13:55 GMT+03:00 ekassir :

> Проблема обнаружена:
> директива ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
> работает глобально, а не для каждого отдельного сайта.
>
> Придётся прописывать всё в общем конфиге.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,261349,261355#msg-261355
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность ekassir
Попробуй поднять два сайта, на один повесить SSLv3, на другой TLSv1.2 и
посмотреть, что получится.
Я исправил конфиги и теперь работает.
Может быть проблема в SNI?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261349,261357#msg-261357

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Alex Domoradov
Ну, например, старый софт, который умеет только sslv3 или в лучшем случае
tlsv1

2015-09-01 15:20 GMT+03:00 Gena Makhomed :

> On 01.09.2015 13:55, ekassir wrote:
>
> Проблема обнаружена:
>> директива ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
>> работает глобально, а не для каждого отдельного сайта.
>> Придётся прописывать всё в общем конфиге.
>>
>
> А зачем может понадобиться запрещать TLSv1.1 и TLSv1.2 ?
> Или делать для каждого серверу различную настройку.
>
> https://www.ssllabs.com/ssltest/ наоброт рекомендует,
> выключать SSLv3 и включать старшие версии протоколов.
>
> Из некоторых реализаций OpenSSL даже вообще выбросили
> поддержку протоколов SSLv2 и SSLv3, оставив только TLS.
>
> --
> Best regards,
>  Gena
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность ekassir
Прямого запрета не требуется. Нужна была доступность протокола TLS 1.0,
который используется приложениями, совместимость с которыми нужно было
обеспечить.
В итоге, пришлось для всего списка сайтой прописать TLS 1.0, чтобы он начал
поддерживаться на нужном hostname.

Кто знает, это бага или фича? Как обойти?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261349,261364#msg-261364

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность Gena Makhomed

On 01.09.2015 15:37, Alex Domoradov wrote:


Ну, например, старый софт,
который умеет только sslv3 или в лучшем случае tlsv1



А зачем может понадобиться запрещать TLSv1.1 и TLSv1.2 ?
Или делать для каждого серверу различную настройку.


Если софт умеет только SSLv3 - он не умеет TLSv1.1 и TLSv1.2,
поэтому и не понятно, зачем тогда *запрещать* TLS на сервере?
Вот смысла именно в таком действии я не вижу вообще никакого.

Имхо есть только одна причина, зачем это может быть нужно - если
старый софт думает что умеет работать по новым версиям протоколов,
а на самом деле - эти протоколы в нем реализованы с ошибками.

Интересно, что это за такой кривой софт, который не умеет работать
по TLS и насколько сильно он распространен среди клиентов в интернете.
Потому что я лично SSLv3 вообще запретил, браузеры его не поддерживают.

--
Best regards,
 Gena

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не применятеся список разрешённых протоколов SSL.

2015-09-01 Пенетрантность ekassir
CentOS 6.5-6.7 + nginx 1.8.0 - проблема осталась.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,261349,261365#msg-261365

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru