A invata despre certificate SSL si tehnologia de baza din spatele acestora este precum vizitarea unui oras nou si descoperirea unor atractii mai mici si mai putin cunoscute. Acest lucru se aplica si in cazul SNI (Server Name Indication). Probabil ati mai intalnit acest acronim  – SNI –  pe un forum de securitate web sau intr-un ghid SSL, insa probabil nu aveti niciun indiciu despre ce este vorba.

In acest articol, va vom explica ce este SNI si de ce este posibil sa aveti nevoie de el. Pentru a intelege mai bine intregul proces, trebuie sa facem un pas inapoi in timp, inainte de crearea SNI.

Inainte de SNI: Name-Based Hosts si neconcordanta acestora cu HTTPS

In urma cu mai bine de un deceniu, doar o mica parte din siturile web foloseau protocolul HTTPS. HTTP era inca regele. In prezent, daca doriti sa gazduiti mai multe site-uri web HTTP pe aceeasi adresa IP, puteti utiliza gazde name-based. De exemplu, daca rulati trei site-uri HTTP pe aceeasi adresa IP, atunci cand un utilizator se conecteaza la un anumit site, utilizeaza un antet HTTP unic care contine numele de gazda. In raspuns, serverul dvs. identifica si potriveste acest antet si trimite utilizatorului destinatia dorita.

Aceasta abordare a functionat pana cand HTTPS a intrat in ecuatie. Deoarece SSL/TLS necesita un protocol handshake pentru a stabili o conexiune sigura intre un client si un server, antetul HTTP cu numele de gazda necesar nu poate fi descarcat inainte de finalizarea handshake. Serverul pur si simplu nu stie ce site web sa potriveasca si sa-l trimita utilizatorului.

Ce este SNI (Server Name Indication)?

SNI (Server Name Indication) este o extensie a protocolului TLS (Transport Layer Security).

Stim cu totii ca TLS este protocolul criptografic care protejeaza date sensibile in tranzit, asigurand securitatea comunicatiilor end-to-end prin retele. Acesta este utilizat la scara larga pentru comunicatii in Internet si tranzactii online, fiind destinat sa previna interceptarea, manipularea fraudelor si falsificarea mesajelor. Insa in sine, si in anumite situatii, TLS este departe de a fi perfect.

O astfel de situatie esentiala este rularea mai multor certificate SSL pe aceeasi adresa IP. TLS nu poate face acest lucru decat daca primeste un pic de ajutor de la o extensie. La fel cum extensiile browserului dvs. adauga mai multe caracteristici si functionalitati mai bune, SNI este o extensie a protocolului TLS / SSL care permite utilizatorilor sa gazduiasca mai multe certificate SSL pe o singura adresa IP. SNI face acest lucru prin introducerea antetului HTTP in protocolul hadshake SSL/TLS.

Inainte ca SNI sa devina o extensie TLS, in 2003, fiecare site web pe care doreati sa il criptati avea nevoie de o adresa IP unica. Acest lucru duce la costuri uriase, dar mai ingrijorator, la consumul rapid de adrese IP IPv4. Adresele IP unice nu sunt infinite. De exemplu, versiunea 4 a protocolului Internet are aproximativ patru miliarde de adrese.

Inainte de aparitia SNI, existau adevarate ingrijorari ca adresele IPv4 vor fi epuizate inainte de sosirea noului IPv6. SNI a reusit sa mai risipeasca aceste temeri si sa incetineasca epuizarea IPv4. In alta ordine de idei, IPv6 are un numar de adrese de aproximativ 340 „undecillion” sau aproximativ 340 de miliarde de miliarde de miliarde de miliarde de adrese (sau 340 urmat de 36 de zerouri). Un asemenea numar de adrese ar trebui sa fie suficient pentru viitorul previzibil.

Compatibilitatea SNI

SNI este acum compatibil cu 99% dintre browsere si cu toate sistemele de server importante. Chrome, Mozilla, Opera, Safari si browserele mai putin cunoscute, toate accepta SNI. Puteti implementa SNI pe Apache, Nginx, Ubuntu, Debian, CentOS, si pe multe alte sisteme populare. Biblioteci care accepta SNI: Open SSL, GnutTLS, Python, Oracle si Java.

Ori de cate ori aveti nevoie de a securiza mai multe site-uri web pe o singura adresa IP, utilizati SNI in avantajul dvs.