Apoi, blog despre STARTTLS

Dintr-o dată sa dovedit că aproape toate protocoalele de Internet transmite date valoroase în text simplu. Și orice om care poate intercepta traficul să poată extrage date valoroase. Desigur, sigilii și filme fotochki cunoscute de conținut - nu într-adevăr, și valoroase. Dar aici este parola de conectare pentru acces online la sigiliile, sau ID-ul sesiunii când parola de conectare este deja introdus, - este valoros.

Prin urmare, SSL inventat. În ceea ce privește aplicațiile - aproape ca un socket TCP normale, numai datele transmise sunt criptate. Și nici un om în mijlocul focilor tale nu vor mai vedea. Cu excepția cazului, desigur, nu funcționează într-o organizație corespunzătoare, a cărei datorie este bdit.

SSL / TLS - este un criptosistem hibrid. Avem un client, și există un server. Clientul este întotdeauna conectat la server. Serverul are o cheie privată, care este întotdeauna cu el. Iar serverul are o cheie publică, un certificat semnat de o anumită autoritate de certificare. Sau conectați cheia serverului în sine - un certificat auto-semnat. Certificatul conține numele serverului, informații despre proprietarul și alte chestii. Corectitudinea acestor informații confirmate prin semnătura. CA semnează certificate pentru bani. Acestea sunt organizații care apreciază reputația lor, și avem încredere în ei. Și toate acestea încredere și susținere.

Clientul la conectarea la server, primește certificatul său. Se verifică: ca dacă un certificat pentru serverul la care ne conectam? Și dacă nu a expirat termenul de valabilitate a certificatului? Nu avem încredere că CA care a semnat certificatul? Uneori se întâmplă și un certificat de la client, și-l face pe server, iar serverul efectuează aceste aceleași verificări. Dacă totul este în regulă, apoi merge mai departe.

Utilizarea de criptare asimetrică. chei private și cheile publice ale certificatelor, clientul și serverul sunt de acord asupra cheii de sesiune. Ea are o cheie de criptare simetrică. Și această cheie va fi criptate de date ulterioare. Toate în siguranță și frumoasă, dacă utilizați pentru implementările proaspete de TLS. Toate SSL, versiunile 1.0 la 3.0, acum considerat nesigur. Secure - este TLS 1.1 sau 1.2, și, probabil, TLS 1.0.

Ei bine, avem un mod de încredere pentru a cripta conexiuni TCP. Dar avem, de asemenea, vremurile bune, protocoale deja de lucru. Cum se adaugă criptare pentru a le?

Initial a decis: să numim acest nou protocol și atârnă pe un singur port TCP. Prin numele protocolului se adaugă de obicei bukovku S - Secure. Deci, HTTP a devenit HTTPS și mutat de la portul 80 spre portul 443. FTP a devenit FTPS. 21-20 în loc de port a început să utilizeze porturile 990-989. A nu se confunda cu SFTP. care utilizează SSH criptat, mai degrabă decât SSL. SMTP. Mail Transfer Protocol, a devenit SMTPS și migrat de la portul 25 la portul 465. În general, o mulțime de protocoale de e-mail: POP3 → POP3S - 110 → 995, IMAP → IMAPS - 143 → 993. Chiar și în Jabber, de asemenea, cunoscut sub numele de XMPP. mai întâi a mers pe această cale, să ia portul 5223 pentru conexiuni în loc mezhduservernyh 5269 a luat portul 5270. O, Doamne, chiar telnets inventat, pe portul 992 în loc de portul 5222 pentru conexiuni client SSL.

Această abordare, atunci când a alocat un port separat, protocolul de sursă în sine nu se schimbă, ci pur și simplu învelite în SSL, ambalaj SSL numit pentru criptarea SSL. Chiar și are utilitate, care se numește sslwrap. și vă permite să adăugați SSL la orice protocol.

Apoi, blog despre STARTTLS

Un astfel de ambalaj are dezavantajele sale. Am adăugat un nou port. În bine, ar trebui să fie înregistrată în IANA. Acesta trebuie să fie deschis în firewall. Acest port trebuie să fie cineva să asculte, iar apoi vom avea de două ori mai mulți demoni: portul vechi simplu, și noul port SSL. În cele din urmă, deoarece schimbul de certificate și acordul privind criptarea parametrilor au loc înainte de începerea funcționării protocolul nostru de aplicare, unele dintre caracteristicile acestui protocol nu funcționează.

Un bun exemplu: găzduire virtuală în HTTP, sa oprit de lucru în HTTPS. Avem un server HTTP, și servește mai multe site-uri cu nume de domenii diferite. În HTTP / 1.1 client în fiecare cerere specifică un antet gazdă. care pune partea relevantă a adresei URL. Serverul se uită la antetul și alegeți care să mențină site-ul se referă cererea. Este simplu. Dar, în cazul cererilor clienților SSL și verifică certificatul de server înainte de a trimite antete. Și în certificatul conține un server de nume de domeniu. Atât clientul se asigură că acest lucru este exact ceea ce numele la care se referă. Într-un mod amiabil, fiecare site trebuie să aibă propriul certificat. Și aici se pare că, pe același port 443 poate fi doar un singur certificat care nu poate satisface toate site-urile dintr-o dată. Asta nu funcționează.

Într-o încercare de a eluda aceste dificultăți au decis să meargă în altă parte. Extinderea protocolului pentru a fi în măsură să inițieze o sesiune de comunicare nu este criptat, și apoi trece la criptarea, în cazul în care atât clientul, cât și suportul pentru server-l. Acest frumos numit Oportuniste TLS. O echipă, inclusiv criptarea, cunoscut sub numele de STARTTLS.

În primul rând, clientul se conectează la server, ca de obicei, fără criptare. La începutul negocierilor, în conformitate cu regulile protocolului, clientul și serverul încearcă să afle capacitățile lor. În cazul în care atât clientul și serverul pot și doresc să fie criptate, clientul trimite un STARTTLS de comandă. După aceasta, procedura obișnuită este pentru schimbul TLS și acordul cheie. Dacă reușește, comenzile ulterioare într-o sesiune între client și server sunt deja pe un canal criptat.

În cazul SMTP, se pare ca. Puteți verifica telnet obișnuită.

Clientul intreaba serverul ce caracteristici îl acceptă: comanda EHLO. Serverul spune că, printre altele, el este capabil să STARTTLS: 250-STARTTLS. Clientul spune STARTTLS. Serverul spune: Sunt gata să înceapă. După aceea, și noi ar trebui să înceapă TLS, doar telnet nu se poate.

Apoi, blog despre STARTTLS

În XMPP, ca acest protocol se bazează pe XML. STARTTLS arata ca tag-ul XML.

OpenSSL are un client încorporat, care este capabil să facă STARTTLS. Cum ar fi SMTP.

Clientul este destul de slabă, dar este de înțeles, pentru că este numai pentru testare. El vede o mulțime de distracție, unele caractere, asa ca mai bine comenzile SMTP câștig în litere mici: rcpt la. pentru că o mare R determină clientul să facă reconectare. Cu toate acestea, el este capabil să facă STARTTLS pentru smtp, pop3, imap și ftp (opțiunea -starttls).

Utilizați același port pentru conexiuni necriptate și criptat a fost atât de convenabil încât porturile separate pentru SSL declarate rapid depășite. Deci, acum modul standard și cușer pentru TLS - este STARTTLS.

Poate părea că nu este sigur, pentru că încep sesiunea nu este criptat. Dar criptarea este activată imediat ce cele două părți decid că au nevoie de ea. Plaintext sunt acceptate numai de posibilitățile generale ale clientului și serverul. Atât clientul și serverul poate fi configurat astfel încât acestea necesită utilizarea comenzii STARTTLS. În acest caz, se impune ca STARTTLS a fost una dintre primele echipe din sesiune, înainte de transferul de date sensibile. Altfel, munca este blocată conform protocolului.

Dar, cu HTTPS cumva aceasta nu a mers. Poate pentru că HTTP nu oferă sesiuni lungi între client și server, STARTTLS pur și simplu nu au unde să forța de tracțiune. Cu toate acestea, o încercare similară a fost făcută în RFC 2817. dar nu a supraviețuit. Sa oferit să facă upgrade la protocolul TLS, despre cum este acum face pentru HTTP sau sprijin WebSocket și HTTP simultană / 2.

client OpenSSLny poate și folosi SSL înveliș. (Gazdă sub rezerva de a solicita HTTP / 1.1 este opțională)

Dar acum este virtual de găzduire în direct sub HTTPS, să fie dovedit. Puteți lua un certificat wildcard. Domeniul * .myhost.example. și toate subdomeniile vor fi acoperite de acest certificat. Puteți fi incluse într-un certificat de nume de domenii multiple, de multe ori cu ajutorul unor extensii pentru certificatele numite subjectAltName. Pur și simplu, indica într-un certificat de nume de domenii de toate site-urile de pe serverul nostru. Asta e doar pentru a adăuga un certificat va fi emis din nou un alt site.

Apoi, blog despre STARTTLS

În HTTP / 2 totul rămâne neschimbat. Caietul de sarcini nu necesită TLS, există adresă URL cu schema HTTP și HTTPS. Cu toate acestea, implementările existente funcționează numai cu TLS. Acest lucru necesită TLS 1.2 sau mai mare și suport Server Nume indicație.

Cu toate acestea, pentru HTTP / 2 proiect de securitate au oportunistă distractiv pentru HTTP. Pentru URL-ul http lucrat TLS, în cazul în care clientul a fost de acord cu serverul. În loc de una dintre comanda STARTTLS în acest proiect ar trebui să facă schimb de JSONami.

articole similare