Migrarea la TLS 1.3 și alegerea cifrurilor
Ce s-a schimbat în TLS 1.3, ce versiuni și suite de cifrare permiteți în 2026, exemple de configurare a serverului și cum le testați.
Ce s-a schimbat în TLS 1.3
TLS 1.3 (RFC 8446, 2018) nu este o revizuire minoră a versiunii 1.2. A eliminat complet funcțiile care au produs vulnerabilități ani la rând: schimbul de chei RSA fără forward secrecy, Diffie-Hellman static, cifrurile în mod CBC, RC4, compresia și renegocierea. Fiecare conexiune TLS 1.3 folosește un schimb de chei efemer, adică o cheie nouă, valabilă doar pentru sesiunea respectivă. Consecința practică este simplă: o cheie de server furată nu mai poate decripta traficul înregistrat anterior.
Și handshake-ul a devenit vizibil mai rapid. O conexiune nouă are nevoie de un singur dus-întors înainte ca datele aplicației să înceapă să circule, față de două în TLS 1.2, iar o parte mult mai mare din handshake este criptată, inclusiv certificatul serverului. Modul opțional 0-RTT le permite clienților care revin să trimită date chiar din primul mesaj; prețul este că acele date timpurii pot fi reluate de un atacator.
| Aspect | TLS 1.2 | TLS 1.3 |
|---|---|---|
| Forward secrecy | Doar cu suitele ECDHE/DHE | Întotdeauna |
| Moduri de cifrare | CBC, GCM, ChaCha20 și opțiuni vechi | Doar AEAD (GCM, ChaCha20-Poly1305, CCM) |
| Dus-întorsuri înainte de date | Două | Unul (zero cu 0-RTT) |
| Certificatul este vizibil în rețea | Da | Nu, este criptat |
| Numele suitei include schimbul de chei | Da, de exemplu ECDHE-RSA-AES128-GCM-SHA256 | Nu, de exemplu TLS_AES_128_GCM_SHA256 |
Ce versiuni de protocol permiteți
RFC 8996 a retras oficial din uz TLS 1.0 și 1.1 în 2021, iar browserele mari scoseseră deja suportul pentru ele cu ceva timp înainte. Dacă le lăsați active, ajutați doar câțiva clienți foarte vechi, în schimb expuneți pe toată lumea la slăbiciuni legate de coborârea versiunii și picați scanările de conformitate. Pentru site-urile publice, baza practică este, prin urmare, TLS 1.2 împreună cu TLS 1.3.
| Versiune | Stare | Recomandare |
|---|---|---|
| SSL 3.0 | Interzis (RFC 7568) | Dezactivați |
| TLS 1.0 | Retras din uz (RFC 8996) | Dezactivați |
| TLS 1.1 | Retras din uz (RFC 8996) | Dezactivați |
| TLS 1.2 | Actual, sigur cu suitele potrivite | Activați |
| TLS 1.3 | Actual | Activați |
O configurație numai cu TLS 1.3, adică profilul pe care Mozilla îl numește modern, este o alegere rezonabilă pentru API-uri și servicii interne ale căror clienți îi controlați dumneavoastră. Site-urile publice păstrează de obicei și TLS 1.2, din cauza sistemelor de operare vechi, a dispozitivelor încorporate și a unor proxy-uri corporative. Diferența ține mai mult de accesibilitate decât de securitate: un TLS 1.2 limitat la suitele corecte rămâne sigur și astăzi. Verificarea TLS arată ce versiune a negociat efectiv o conexiune.
Alegerea suitelor de cifrare
TLS 1.3
TLS 1.3 definește un set mic de suite, iar cele activate în mod obișnuit sunt toate puternice. Majoritatea serverelor vin cu valori implicite rezonabile, așa că de regulă nu aveți nimic de configurat aici. Suita alege doar cifrul AEAD și funcția de dispersie; schimbul de chei și algoritmii de semnătură se negociază separat, independent de ea.
| Suită | Observații |
|---|---|
TLS_AES_128_GCM_SHA256 | Obligatoriu de implementat; rapidă cu accelerare hardware AES |
TLS_AES_256_GCM_SHA384 | Cheie mai mare; activată pe scară largă |
TLS_CHACHA20_POLY1305_SHA256 | Rapidă pe dispozitivele fără accelerare AES |
TLS 1.2
TLS 1.2 este locul în care configurarea contează cu adevărat. Permiteți doar suitele cu schimb de chei ECDHE, pentru forward secrecy, și cu cifruri AEAD, iar restul scoateți-le complet. RFC 9325 (BCP 195) adună recomandările actuale ale IETF și se potrivește cu ceea ce folosesc profilurile întreținute.
| Permiteți | Scoateți |
|---|---|
ECDHE-ECDSA-AES128-GCM-SHA256 | Orice conține RC4, 3DES, DES sau NULL |
ECDHE-RSA-AES128-GCM-SHA256 | Schimb de chei RSA static, precum AES128-SHA |
ECDHE-ECDSA-AES256-GCM-SHA384 | Suitele în mod CBC (...-CBC-..., ...-SHA fără GCM) |
ECDHE-RSA-AES256-GCM-SHA384 | Suitele export și anonime (EXP, aNULL) |
ECDHE-ECDSA-CHACHA20-POLY1305 | Suitele care folosesc MD5 |
ECDHE-RSA-CHACHA20-POLY1305 |
Grupuri pentru schimbul de chei și hibrizi post-cuantici
Ce înseamnă rezultatele scanerelor
Scanerele TLS raportează problemele cu numele unor atacuri vechi, ceea ce face greu de înțeles care dintre ele contează cu adevărat. Vestea bună este că cele mai multe dispar deodată, în momentul în care dezactivați TLS 1.0 și 1.1 și limitați TLS 1.2 la ECDHE cu cifruri AEAD. Tabelul de mai jos leagă rezultatele frecvente de schimbarea de configurație care le elimină.
| Rezultat | Ce înseamnă | Rezolvare |
|---|---|---|
| TLS 1.0 / 1.1 acceptate | Sunt acceptate versiuni de protocol retrase din uz | Permiteți doar TLS 1.2 și 1.3 |
| Fără forward secrecy | Sunt oferite suite cu schimb de chei RSA static | Scoateți suitele care nu folosesc ECDHE |
| SWEET32 | Sunt oferite cifruri bloc pe 64 de biți, precum 3DES | Scoateți suitele 3DES |
| ROBOT | Schimb de chei RSA cu un padding oracle vulnerabil | Scoateți suitele cu schimb de chei RSA; actualizați biblioteca TLS |
| Diffie-Hellman slab (Logjam) | DHE cu grupuri mai mici de 2048 de biți | Scoateți suitele DHE sau folosiți grupuri puternice; preferați ECDHE |
| Suite RC4 sau CBC | Cifruri vechi cu slăbiciuni cunoscute | Oferiți doar AES-GCM și ChaCha20-Poly1305 |
| Lanț incomplet | Lipsește certificatul intermediar | Serviți fișierul cu lanțul complet |
| Certificatul expiră în curând | Reînnoirea nu a rulat sau a eșuat | Reparați mai întâi automatizarea, apoi reînnoiți |
Rezultatele despre anteturile HTTP, cum ar fi lipsa unui antet HSTS, apar adesea în același raport, însă ele se rezolvă în configurația de anteturi a serverului web, nu în setările TLS. Separarea celor două vă ajută să urmăriți ce schimbare a închis care problemă. Verificarea anteturilor HTTP le listează separat.
Reluarea sesiunii și performanța
Un handshake complet costă un dus-întors și ceva timp de procesor, așa că, ori de câte ori pot, clienții preferă să reia o sesiune anterioară. TLS 1.3 a înlocuit vechile mecanisme cu identificator de sesiune și cu tichete prin chei preîmpărtășite derivate dintr-o sesiune precedentă și, în mod implicit, combină totuși reluarea cu un schimb de chei proaspăt. Astfel, forward secrecy se păstrează și pentru sesiunile reluate.
În TLS 1.2, în schimb, tichetele de sesiune criptate cu o cheie de lungă durată slăbesc forward secrecy, pentru că oricine obține acea cheie poate decripta ulterior sesiunile înregistrate ale căror tichete le-a protejat. Din acest motiv, profilurile Mozilla dezactivează tichetele de sesiune TLS 1.2, cu excepția cazului în care cheile de tichet sunt rotite des. Un cache de sesiune partajat pe server vă oferă cea mai mare parte a câștigului de performanță, fără acest compromis.
HTTP/2 și HTTP/3 reduc și mai mult numărul de handshake-uri TLS, reutilizând o singură conexiune pentru multe cereri. HTTP/3 rulează peste QUIC, care integrează TLS 1.3 direct în transport; activarea lui nu vă schimbă certificatul, dar are nevoie de portul UDP 443 deschis. Dacă regulile de firewall permit doar TCP, clienții revin în tăcere la HTTP/2 peste TCP.
Exemple de configurare a serverului
Exemplele urmează profilul intermediate de la Mozilla, așa cum arăta el în momentul redactării. Fiindcă recomandările se schimbă în timp, generați varianta actuală pentru versiunile exacte ale serverului și bibliotecilor dumneavoastră cu Mozilla SSL Configuration Generator. După fiecare modificare, reîncărcați serverul și verificați rezultatul cu o scanare din exterior.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 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;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:TLS:10m;
ssl_session_tickets off;SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite 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
SSLHonorCipherOrder off
SSLSessionTickets offexample.com {
tls {
protocols tls1.2 tls1.3
}
}ssl_prefer_server_ciphers off lasă clientul să aleagă dintre suitele permise, iar aceasta este recomandarea actuală. Motivul este dublu: fiecare suită pe care o permiteți este oricum puternică, iar clientul știe mai bine decât serverul dacă are accelerare hardware pentru AES. Suitele TLS 1.3 se configurează printr-o setare separată în serverele bazate pe OpenSSL și rareori au nevoie de modificări.
În spatele unui CDN sau al unui echilibrator de sarcină, marginea rețelei este cea care termină TLS pentru vizitatori, așa că politica ei TLS este cea pe care o văd Verificarea TLS și browserele, nu cea a serverului dumneavoastră. Configurați acolo versiunea minimă și folosiți TLS și pe legătura dintre margine și serverul de origine.
Certificate și tipuri de chei
Păstrați cheile private doar pe serverele sau platformele de margine care termină TLS și faceți-le lizibile numai pentru contul de serviciu care are nevoie de ele. Când reemiteți un certificat după orice suspiciune de expunere, schimbați și cheia, nu doar certificatul. Un certificat reemis cu aceeași cheie lasă în uz exact materialul criptografic care s-ar putea să fi fost compromis.
Tipul de cheie al certificatului determină direct ce suite pot fi folosite. Certificatele ECDSA P-256 sunt mai mici și se verifică mai repede decât cele RSA; RSA 2048 rămâne în schimb acceptat practic peste tot. Multe servere pot servi ambele tipuri în paralel și pot alege unul pentru fiecare client, însă cu clienții de astăzi un singur certificat ECDSA sau RSA este perfect suficient.
- Serviți lanțul complet: certificatul frunză plus certificatele intermediare, fără rădăcină.
- Automatizați reînnoirea; durata de viață a certificatelor de încredere publică scade continuu, conform regulilor CA/Browser Forum.
- Monitorizați expirarea independent de procesul de reînnoire, de exemplu cu Verificarea TLS într-o verificare programată sau prin API-ul XGM.
- Adăugați HTTP Strict Transport Security după ce HTTPS funcționează peste tot; ghidul HSTS explică cum se face trecerea.
Testarea configurației
Testați întotdeauna din afara rețelei dumneavoastră, pentru că proxy-urile și rețelele CDN schimbă ceea ce văd vizitatorii. Verificați pe rând că TLS 1.3 și 1.2 se conectează, că 1.0 și 1.1 sunt refuzate și ce suite oferă efectiv serverul. Comenzile de mai jos folosesc OpenSSL și nmap, două unelte disponibile aproape peste tot.
# TLS 1.3 should connect
openssl s_client -connect example.com:443 -servername example.com -tls1_3 </dev/null 2>/dev/null | grep -E 'Protocol|Cipher'
# TLS 1.1 should fail (depending on your OpenSSL build, the client may refuse locally)
openssl s_client -connect example.com:443 -servername example.com -tls1_1 </dev/null
# list offered protocol versions and suites
nmap --script ssl-enum-ciphers -p 443 example.com| Verificare | Așteptat |
|---|---|
| Conexiune TLS 1.3 | Protocol: TLSv1.3 cu o suită AES-GCM sau ChaCha20 |
| Conexiune TLS 1.2 | Doar suite ECDHE cu GCM sau ChaCha20 |
| TLS 1.0 / 1.1 | Eroare de handshake |
| Certificat | Valid, cu lanț complet, potrivit cu numele gazdei și departe de expirare |
| Calificativul din rezultatul nmap | Nicio suită marcată drept slabă |
Automatizați scanarea. Rularea acelorași verificări săptămânal, sau după fiecare schimbare de infrastructură, prinde din timp regresii precum un echilibrator de sarcină nou lăsat pe setările implicite sau un certificat reînnoit cu un lanț incomplet. Păstrați rezultatele, ca să puteți vedea nu doar că starea actuală este greșită, ci și momentul exact în care lucrurile s-au stricat.
Dacă o verificare eșuează doar din anumite locații, bănuiți un CDN sau o configurație anycast în care locațiile de margine rulează configurații diferite, ori o schimbare DNS care nu a ajuns încă la toate resolverele. Testarea, pe rând, a adreselor IP din spatele numelui de gazdă, cu --resolve în curl sau cu -connect către un IP anume în OpenSSL, restrânge foarte repede problema.
Nu uitați celelalte puncte finale TLS: serverele de e-mail pe porturile 25, 465 și 587, IMAP pe 993 și panourile de administrare pe porturi nestandard. Acolo rulează adesea alt software, cu valori implicite mai vechi. Scanerul de porturi arată ce porturi sunt accesibile din internet.
Compatibilitate și punere în producție
Dezactivarea TLS 1.0 și 1.1 afectează doar clienții care nu pot vorbi TLS 1.2, adică astăzi sisteme de operare foarte vechi, dispozitive încorporate neactualizate și câteva integrări moștenite. Dacă aveți jurnale de server cu versiunea de protocol, uitați-vă câte cereri mai folosesc versiunile vechi înainte de a le opri. Multe echipe constată că numărul este practic zero, în afara scanerelor automate.
- Înregistrați timp de o săptămână protocolul și cifrul negociat, dacă serverul dumneavoastră permite asta.
- Identificați clienții vechi rămași; contactați din timp responsabilii integrărilor importante.
- Dezactivați TLS 1.0 și 1.1 și suitele TLS 1.2 slabe într-o singură modificare, apoi scanați.
- Urmăriți câteva zile ratele de eroare și solicitările primite la suport.
- Reluați anual comparația configurației cu profilul Mozilla actual.
Întrebări frecvente
TLS 1.2 mai este sigur?
Da, împreună cu suite ECDHE care oferă forward secrecy și cu cifruri AEAD. Problemele TLS 1.2 vin din suitele și funcțiile vechi, pe care le puteți dezactiva.
Să dezactivez TLS 1.2 și să folosesc doar 1.3?
Pentru API-uri și servicii cu clienți moderni este o alegere rezonabilă. Site-urile publice păstrează de obicei TLS 1.2, pentru dispozitivele vechi și pentru proxy-urile corporative.
Trebuie să configurez suitele de cifrare TLS 1.3?
Rareori. Suitele TLS 1.3 implicite din versiunile actuale de OpenSSL, BoringSSL și alte biblioteci sunt toate puternice.
Ce este 0-RTT și ar trebui să îl activez?
0-RTT le permite clienților care revin să trimită date în primul mesaj, economisind un dus-întors. Acele date timpurii pot fi reluate, așa că activați-l doar pentru cereri sigure de repetat, altfel lăsați-l oprit.
De ce spune un scaner că serverul meu acceptă cifruri slabe, deși configurația mea nu le are?
Scanerul poate ajunge la un alt punct final, cum ar fi un CDN, un echilibrator de sarcină sau o gazdă virtuală veche servită ca implicită. Verificați ce server termină efectiv TLS pentru acel nume de gazdă.
Pentru certificat este mai bun ECDSA sau RSA?
Cheile ECDSA P-256 sunt mai mici, iar handshake-urile sunt mai rapide, și toate browserele actuale le acceptă. RSA 2048 are cea mai largă compatibilitate cu clienții foarte vechi. Pentru majoritatea site-urilor, oricare dintre ele este potrivit.
Serviciile interne au nevoie de aceleași setări TLS?
Da, iar ele rămân adesea în urmă. API-urile interne, bazele de date și uneltele de administrare au de obicei clienți pe care îi controlați, ceea ce face o configurație numai cu TLS 1.3 mai ușoară acolo decât pe site-urile publice.
Cum stau lucrurile cu TLS pe serverele de e-mail?
SMTP între servere folosește STARTTLS și, de dragul compatibilității, permite adesea o gamă mai largă de versiuni decât site-urile web. Dezactivați și acolo SSL 3.0, TLS 1.0 și 1.1, în măsura în care software-ul de e-mail vă permite, și consultați ghidul MTA-STS pentru impunerea TLS la livrare.
Contează versiunea de TLS pentru SEO?
Motoarele de căutare se așteaptă la HTTPS, dar nu clasează după versiunea de TLS. Motivele reale ale modernizării sunt securitatea, conformitatea și viteza.
Surse
- RFC 8446: Protocolul Transport Layer Security (TLS) versiunea 1.3
- RFC 8996: Retragerea din uz a TLS 1.0 și TLS 1.1
- RFC 9325: Recomandări pentru utilizarea sigură a TLS și DTLS (BCP 195)
- RFC 7568: Retragerea din uz a Secure Sockets Layer versiunea 3.0
- Mozilla SSL Configuration Generator
- Wiki Mozilla: TLS pe partea de server