Puncte:1

TLS 1.3 nu funcționează pe nginx 1.21 cu openssl 1.1.1n

drapel us

Am nginx (1.21.6) care rulează cu openssl 1.1.1n pe un server Debian 11. Deși am urmat multe tutoriale și m-am uitat la mai multe întrebări pe acest forum despre acest subiect, nu pot face ca TLS 1.3 să funcționeze. Ieșirea de nginx -V:

Versiunea nginx: nginx/1.21.6
construit de gcc 10.2.1 20210110 (Debian 10.2.1-6)
construit cu OpenSSL 1.1.1k 25 martie 2021 (rulează cu OpenSSL 1.1.1n 15 martie 2022)
Activare suport TLS SNI

Am actualizat nginx la versiunea principală, deoarece nu am reușit să fac funcționarea TLS 1.3 și în versiunile anterioare. Este foarte ciudat... Openssl acceptă cu siguranță TLS 1.3. L-am testat prin intermediul openssl s_client -tls1_3 -connect www.cloudflare.com:443 care a funcționat bine. Aici al meu ssl.conf fișierul nginx pe care l-am inclus în fiecare dintre serverele mele nginx (certificatele sunt incluse separat în secțiunile de server):

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m; # aproximativ 40000 de sesiuni
ssl_session_tickets off;

ssl_capsare activată;
#ssl_trusted_certificate /pfad/bundle.ca.pem;
ssl_stapling_verify on;

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-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS-CHACHA20-POLY1305-SHA256-GCM-LSHA256-TLSHA256: -128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-8GCMA-SHA256: -CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers activat;

# HSTS (este necesar ngx_http_headers_module) (63072000 secunde)
add_header Strict-Transport-Security "max-age=31536000;preload;includeSubDomains" întotdeauna;

The Qualys ssltest dintre site-urile mele Totuși, nu arată că folosesc TLS 1.3 pe serverul meu. De asemenea, browserul Chrome arată că se conectează prin TLS 1.2. Chiar dacă scot TLSv1.2 directivă de la mine ssl.conf și plecând numai TLSv1.3, se conectează încă prin TLS 1.2.

Nu există altundeva a ssl_protocolsdirectivă în orice alt fișier de configurare al nginx. Am verificat asta prin nginx -T.

chiar raman fara idei..... Ma poate ajuta cineva?

EDITAȚI | ×: Cumva, nginx nu pare să reacționeze la ssl_protocols si ssl_ecdh_curve directivă în mod corespunzător. De exemplu, când șterg ssl_ciphers din configurația mea (după cum a sugerat @drookie în comentariul său), TLS 1.0 și TLS 1.1 par să fie acceptate de serverul meu, deși am setat ssl_protocols TLSv1.3 TLSv1.2;. În mod similar, conform Qualys ssltest, secp256r1 este suportat, deși nu am această curbă în configurația mea de ssl_ecdh_curve (nici prime256v1). Mi se pare că ceva îmi suprascrie setările în ssl.conf fişier. Folosesc acme.sh pentru a-mi obține certificatele. grep -R 'ssl_protocol' /etc/* dă doar linia înăuntru ssl.conf cu ssl_protocols TLSv1.3 TLSv1.2;. Nu am idee ce ar putea cauza interferența/suprascrierea...

Steffen Ullrich avatar
drapel se
Ai verificat jurnalul de erori?
drapel br
Ce raportează nginx -t?
phonon112358 avatar
drapel us
@Robert Longson `nginx -t nginx: sintaxa fișierului de configurare /etc/nginx/nginx.conf este ok nginx: fișierul de configurare /etc/nginx/nginx.conf testul a reușit`
phonon112358 avatar
drapel us
@Steffen Ullrich: Văd doar erori care provin de la SSLTest de la qualys, indicând faptul că unele strângeri de mână nu au succes: `[crit] 94566#94566: *34 SSL_do_handshake() failed (SSL: error:14201044:SSL routines:tlsg_choosenal_sigalg:international eroare) în timp ce handshaking SSL, client: 64.41.200.113, server: 0.0.0.0:443`. Chiar și în modul de depanare, nu mai sunt afișate erori SSL atunci când accesez site-ul.
phonon112358 avatar
drapel us
o altă eroare venită de la Qualys ssltest `[info] 47207#47207: *206 SSL_do_handshake() a eșuat (SSL: error:1417A0C1:SSL routines:tls_post_process_client_hello:no shared cipher) în timp ce SSL handshake, client 1..4640..4:1.0C1:SSL 0,0:443`. Dar cred că e normal
drookie avatar
drapel za
Revocați `ssl_ciphers`, încercați setările implicite pentru început. Este posibil să vă lipsească pur și simplu cifrul pentru TLS 1.3.
phonon112358 avatar
drapel us
@drookie Eliminarea `ssl_ciphers` face ca serverul să accepte TLS 1.0 și TLS 1.1, dar nu și TLS 1.3! Foarte interesant că pare să ignore `ssl_protocols`...
Puncte:1
drapel us

După multe teste suplimentare și multă lectură, am găsit în sfârșit o soluție. A trebuit să scriu configurația ssl în http bloc, nu în Server blocuri ale configurației mele nginx. Acest lucru a funcționat, totuși, numai dacă copiez directivele din mine ssl.conf fişier în mod explicit către http bloc în mine nginx.conf (in caz contrar nginx -t iesiri

nginx: [emerg] număr nevalid de argumente în directiva „include” în /etc/nginx/nginx.conf:33
nginx: testul fișierului de configurare /etc/nginx/nginx.conf a eșuat

pentru un anumit motiv).

Prin urmare, al meu http bloc de nginx.conf arată acum după cum urmează:

http {

  ...
 
    ssl_dhparam /etc/nginx/dhparams.pem;
    
    ssl_ecdh_curve X448:secp521r1:secp384r1;
    
    ssl_protocols TLSv1.3 TLSv1.2;
   ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-SHARSA5-CDHES-25-RSAG2: AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

   ...

    # Configurații gazdă virtuală
    ##

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enabled/*;
}

Nu știu de ce aceste setări ssl trebuie incluse/lipite în fișierul http bloc mai degrabă decât în ​​fiecare Server bloc..... Dar funcționează și TLS 1.3 este activat!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.