У меня есть nginx (1.21.6), работающий с openssl 1.1.1n на сервере Debian 11.
Хотя я следил за многими руководствами и просмотрел несколько вопросов на этом форуме по этой теме, я не могу заставить работать TLS 1.3.
Результат нгинкс-V
:
Версия nginx: nginx/1.21.6
построен gcc 10.2.1 20210110 (Debian 10.2.1-6)
построен с OpenSSL 1.1.1k 25 марта 2021 г. (работает с OpenSSL 1.1.1n 15 марта 2022 г.)
Поддержка TLS SNI включена
Я обновил nginx до основной версии, потому что не смог заставить работать TLS 1.3 и в предыдущих версиях. Это очень странно...
Openssl определенно поддерживает TLS 1.3. Я проверил это через openssl s_client -tls1_3 -connect www.cloudflare.com:443
который работал хорошо.
Вот мой ssl.conf
файл nginx, который я включил в каждый из своих серверов nginx (сертификаты включены отдельно в разделы сервера):
ssl_session_timeout 1 д;
ssl_session_cache общий: SSL: 10 м; # около 40000 сеансов
ssl_session_tickets выключен;
ssl_stapling включен;
#ssl_trusted_certificate /pfad/bundle.ca.pem;
ssl_stapling_verify включен;
ssl_dhparam /etc/nginx/dhparams.pem;
ssl_ecdh_curve X448: secp521r1: secp384r1;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES -128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA -CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers включен;
# HSTS (требуется ngx_http_headers_module) (63072000 секунд)
add_header Strict-Transport-Security "max-age=31536000;preload;includeSubDomains" всегда;
Qualys sslтест моих сайтов однако не показывает, что я использую TLS 1.3 на своем сервере. Кроме того, браузер Chrome показывает, что он подключается через TLS 1.2.
Даже если я удалю TLSv1.2
директива от моего ssl.conf
и оставив только TLSv1.3
, он по-прежнему подключается через TLS 1.2.
Больше нигде нет ssl_protocols
в любом другом конфигурационном файле nginx. Я проверил это через нгинкс-Т
.
У меня реально заканчиваются идеи.....
Может кто-нибудь помочь мне?
РЕДАКТИРОВАТЬ:
Почему-то nginx не реагирует на ssl_protocols
и ssl_ecdh_curve
директива должным образом. Например, когда я удаляю ssl_ciphers
из моей конфигурации (как предложил @drookie в своем комментарии), TLS 1.0 и TLS 1.1, похоже, поддерживаются моим сервером, хотя я установил ssl_protocols TLSv1.3 TLSv1.2;
. Аналогично, согласно Qualys ssltest, секп256р1
поддерживается, хотя у меня нет этой кривой в моей конфигурации ssl_ecdh_curve
(ни премьер256v1
). Мне кажется, что-то перезаписывает мои настройки в ssl.conf
файл.
Я использую acme.sh для получения своих сертификатов.
grep -R 'ssl_protocol' /etc/*
дает только строку в ssl.conf
с ssl_protocols TLSv1.3 TLSv1.2;
.
Я понятия не имею, что может вызвать помехи/перезапись...