Server Name Indication ( SNI ) este o extensie a protocolului computerului TLS [1] care permite clienților să indice numele gazdei la care doresc să se conecteze în timpul procesului de strângere de mână. Acest lucru permite serverului să furnizeze mai multe certificate pe aceeași adresă IP și port TCP și, prin urmare, permite mai multor site-uri securizate ( HTTPS- ) (sau alte servicii prin TLS) să funcționeze pe aceeași adresă IP fără a utiliza deloc același certificat. . Aceasta este echivalentă cu caracteristica de găzduire partajată bazată pe nume de la HTTP/1.1. Numele de gazdă solicitat nu este criptat [2], care permite unui atacator să-l intercepteze.
Utilizarea practică a SNI necesită ca marea majoritate a utilizatorilor să folosească browsere care acceptă această caracteristică. Utilizatorii ale căror browsere nu acceptă SNI vor primi un certificat implicit (dependent de implementare, de obicei primul din listă) și de aici o eroare de certificat dacă serverul nu este echipat cu un certificat wildcard și nu conține numele site-ului solicitat de client .
Din toamna anului 2018, au fost efectuate experimente pentru implementarea SNI criptat [3] din protocolul TLS 1.3, care criptează numele site-ului solicitat folosind cheia publică a site-ului obținută din sistemul de nume DNS [4] [5 ] ] [6] [7] .
În timpul creării unei conexiuni TLS, clientul solicită un certificat digital de la serverul web; după ce serverul trimite certificatul, clientul verifică valabilitatea acestuia și compară numele cu care a încercat să se conecteze la server cu numele conținute în certificat. Dacă comparația are succes, conexiunea se face în mod criptat. Dacă nu se găsesc potriviri, utilizatorul poate fi avertizat cu privire la nepotrivire și conexiunea este întreruptă, deoarece nepotrivirea poate indica o încercare de atac man-in-the-middle . Cu toate acestea, unele aplicații permit utilizatorului să ignore avertismentul pentru a continua conexiunea, lăsând utilizatorului să aibă încredere în certificat și astfel să se conecteze la site.
Cu toate acestea, poate fi dificil – sau chiar imposibil, din cauza lipsei unei liste complete prealabile a tuturor numelor – să obțineți un singur certificat care să acopere toate numele pentru care serverul va fi responsabil. Un server responsabil pentru mai multe nume de gazdă va trebui probabil să prezinte certificate diferite pentru fiecare nume de gazdă (sau un grup mic de nume de gazdă). Din 2005, CAcert a experimentat diverse metode de utilizare a TLS pe servere virtuale [8] . Majoritatea experimentelor sunt nesatisfăcătoare și impracticabile. De exemplu, subjectAltName poate fi folosit pentru a stoca mai multe domenii controlate de aceeași persoană [9] într-un singur certificat. Aceste „certificate uniforme” trebuie reemise de fiecare dată când lista de domenii se modifică.
Găzduirea partajată pe bază de nume vă permite să găzduiți mai multe nume de gazdă pe același server (de obicei, un server web) pe aceeași adresă IP. Pentru a realiza acest lucru, serverul folosește numele de gazdă furnizat de client ca parte a protocolului (pentru HTTP, numele este furnizat în antetul Gazdă ). Cu toate acestea, când se utilizează HTTPS, strângerea de mână TLS are loc înainte ca serverul să vadă anteturile HTTP. Prin urmare, serverul nu poate folosi informațiile din antetul gazdei HTTP pentru a decide ce certificat să reprezinte și, astfel, numai numele scrise în același certificat pot fi servite pe aceeași adresă IP.
În practică, aceasta înseamnă că un server HTTPS poate servi doar un domeniu (sau un grup mic de domenii) per adresă IP pentru o navigare sigură și eficientă. Atribuirea unei adrese IP separate pentru fiecare site crește costul găzduirii, deoarece solicitările de adrese IP trebuie justificate cu un registrator de Internet regional , iar adresele IPv4 sunt deja epuizate . Drept urmare, multe site-uri web nu pot folosi protocolul securizat atunci când folosesc IPv4. Spațiul de adrese IPv6 nu este epuizat, astfel încât site-urile web deservite prin IPv6 nu sunt afectate de această problemă.
Din august 2020, traficul ESNI și TLSv1.3 a fost blocat în China [10] .
Din octombrie 2020 și mai devreme în Rusia, furnizorii au început să blocheze și traficul ESNI, ceea ce în cele din urmă face site-urile obișnuite și nu interzise inaccesibile utilizatorilor, având în vedere că nu există legi în vigoare care să blocheze această tehnologie [11] . Primii furnizori care au blocat ESNI au fost Rostelecom și apoi filiala sa OOO T2 RTK Holding (marca Tele2 Rusia).