Через несколько недель на моем веб-сервере Niginx возникла проблема с протоколами TLS версий 1.1 и 1.2:
Когда пользователь пытается подключиться к моему веб-сайту, веб-браузер и Nginx выбирают только TLS 1.0 для соединения.
в файле conf виртуального хоста Nginx я упомянул об использовании TLS 1.0, 1.1 и 1.2:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES256-SHA256:AES256-SHA; ssl_prefer_server_ciphers on;
Версия nginx: nginx / 1.4.2 Поддержка TLS SNI включена аргументы конфигурации: --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 -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-mail --with-mail_ssl_module --with-file-cio - '-g -O2 -Wp, -D_FORTIFY_S OURCE = 2 '--with-ld-opt = --with-ipv6
OpenSSL 1.0.1e 11 февраля 2013 г.
Дистрибутив Linux: Debian 7.1 x64
Qualys ssl labs результат
TLS 1.2 Нет
TLS 1.1 Нет
TLS 1.0 Да
SSL 3 Нет
SSL 2 Нет
В чем моя ошибка?
Спасибо
хафлингер
Не нарушая установленную версию openssl, поставляемую с вашей системой, вы можете попробовать собрать nginx с пользовательской версией openssl. При создании пакета nginx укажите следующую опцию. Я делаю это со своим пользовательским rpm и последней версией openssl.
--with-openssl=/home/mschirrmeister/openssl-1.0.1f
После такой сборки установите на сервер только пакет nginx и попробуйте снова выполнить тест ssllabs. Теперь он должен показать поддержку большего количества версий.
Извините за мой плохой английский. У меня такая же ситуация, и мне потребовалось много времени, чтобы выяснить это. Первые ключевые слова ssl_protocol, которые читает nginx, доминируют над всем протоколом ssl сервера в nginx conf.
Измените значение «ssl_protocol» для всей конфигурации вашего сервера (на самом деле только первый в порядке), чтобы оно содержало значение «TLSv1.2», может работать.
openssl 1.0.1e в порядке. Но ваша ОС может иметь две версии libssl. (У меня 0.9.8 и 1.0.1e). Так что ваш nginx может ссылаться на libssl 0.9.8.
Попробуйте скомпилировать nginx с указанным исходным кодом openssl последней версии.
Я думаю тебе нужно использовать
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
не
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Вот что я обычно использую для настройки SSL с nginx:
ssl on;
ssl_certificate /etc/nginx/ssl/<domain>/server.crt;
ssl_certificate_key /etc/nginx/ssl/<domain>/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
Это рабочая конфигурация для прод-серверов, попробуйте:
ssl_session_timeout 10m;
ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;
ssl_session_cache shared:SSL:10m;
ssl_prefer_server_ciphers on;
Затем перезапустите Qualys ssl.