Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pc:laboratoare:13 [2020/05/10 06:35]
catalin.leordeanu
pc:laboratoare:13 [2022/06/02 13:09] (current)
dorinel.filip
Line 2: Line 2:
  
 ==== Utilizare programatica ==== ==== Utilizare programatica ====
 +
 +Protocolul SSL (Secure Socket Layer - https://​www.ssl.com/​faqs/​faq-what-is-ssl/​) a aparut ca urmare
 +a necesitatii de a asigura conexiuni sigure in Internet, in stiva de protocoale fiind situat intre nivelul TCP
 +si nivelul aplicatie. Protocolul asigura autentificarea mutuala a celor doua entitati care comunica, confidentialitatea
 +comunicarii si protectia integritatii datelor. Una dintre cele mai des intalnite aplicatii ale SSL-ului este
 +HTTPS (HTTP securizat), care consta din protocolul HTTP utilizat peste SSL.
  
 SSL si conexiunile securizate pot fi folosite pentru orice tip de protocol pe Internet, HTTP, POP3 sau FTP. SSL si conexiunile securizate pot fi folosite pentru orice tip de protocol pe Internet, HTTP, POP3 sau FTP.
Line 40: Line 46:
 OpenSSL foloseste o biblioteca numita BIO pentru a asigura comunicarea atit securizata cat si nesecurizata. OpenSSL foloseste o biblioteca numita BIO pentru a asigura comunicarea atit securizata cat si nesecurizata.
 Pentru a crea o conexiune fie ea securizata sau nu, un pointer pentru un obiect de tip BIO trebuie creat Pentru a crea o conexiune fie ea securizata sau nu, un pointer pentru un obiect de tip BIO trebuie creat
-similar cu crearea unui pointer la FILE (in C). Crearea unei noi conexiuni se face cu BIO new connect+similar cu crearea unui pointer la FILE (in C). Crearea unei noi conexiuni se face cu //​BIO_new_connect()//​
-specificind ​hostname si portul. Daca a aparut vreo eroare la crearea obiectului BIO, functia va intoarce+specificand ​hostname si portul. Daca a aparut vreo eroare la crearea obiectului BIO, functia va intoarce
 NULL. Totodata se va incerca sa se deschida conexiunea. Pentru a verifica daca acest lucru s-a realizat cu NULL. Totodata se va incerca sa se deschida conexiunea. Pentru a verifica daca acest lucru s-a realizat cu
-succes se apeleaza ​BIO do connect ​care returneaza 0 (OK) sau -1 (eroare).+succes se apeleaza ​//​BIO_do_connect()// ​care returneaza 0 (OK) sau -1 (eroare).
  
 <​code>​ <​code>​
Line 101: Line 107:
 </​code>​ </​code>​
  
-Conexiunea poate fi inchisa in doua moduri, cu BIO reset() astfel incat poate fi reutilizata ulterior sau cu+Conexiunea poate fi inchisa in doua moduri, cu //BIO_reset()// astfel incat poate fi reutilizata ulterior sau cu
 //​BIO_free_all()//​ caz in care se elibereaza memoria alocata si se inchide socketul asociat. //​BIO_free_all()//​ caz in care se elibereaza memoria alocata si se inchide socketul asociat.
  
Line 120: Line 126:
 handshake la orice moment. RFC 2246 detaliaza aspectele referitoare la protocolul de handshake. handshake la orice moment. RFC 2246 detaliaza aspectele referitoare la protocolul de handshake.
  
-Pentru a stabili o conexiune securizata mai sunt necesari doi pointeri unul de tip SSL CTX (context object)+Pentru a stabili o conexiune securizata mai sunt necesari doi pointeri unul de tip //​SSL_CTX// ​(context object)
 si unul de tip SSL. si unul de tip SSL.
  
Line 132: Line 138:
 toate certificatele trusted. toate certificatele trusted.
  
-Functia ​SSL CTX load verify ​locations e folosita pentru a incarca acest fisier. Aceasta functie are trei+Functia ​//​SSL_CTX_load_verify_ ​locations()// e folosita pentru a incarca acest fisier. Aceasta functie are trei
 parametri: pointerul la context calea catre fisierul *.pem si calea catre un director ce contine certificate. parametri: pointerul la context calea catre fisierul *.pem si calea catre un director ce contine certificate.
 Unul din ultimii doi parametri trebuie specificat (ori fisierul *.pem sau, alternativ, directorul ce contine Unul din ultimii doi parametri trebuie specificat (ori fisierul *.pem sau, alternativ, directorul ce contine
Line 168: Line 174:
 </​code>​ </​code>​
  
-Pentru a verifica daca validarea certificatului s-a facut cu succes se apeleaza ​SSL get verify result() cu unic+Pentru a verifica daca validarea certificatului s-a facut cu succes se apeleaza ​//​SSL_get_verify_result()// cu unic
 parametru structura SSL. Daca validarea s-a efectuat cu succes returneaza X509 V OK, altfel intoarce un parametru structura SSL. Daca validarea s-a efectuat cu succes returneaza X509 V OK, altfel intoarce un
 cod de eroare care poate fi documentat daca se foloseste optiunea verify in linia de comanda a utilitarului. cod de eroare care poate fi documentat daca se foloseste optiunea verify in linia de comanda a utilitarului.
Line 179: Line 185:
 </​code>​ </​code>​
  
-Stiva de erori poate fi scrisa intr-un fisier cu ERR print errors fp(FILE *);+Stiva de erori poate fi scrisa intr-un fisier cu //​ERR_print_errors_fp(FILE *);//
 Erorile au urmatorul format: Erorile au urmatorul format:
  
Line 189: Line 195:
 ==== Cerinte laborator ==== ==== Cerinte laborator ====
  
-Completati [[pc:​laboratoare:lab13-skel.zip|]]scheletul de cod astfel incat sa se efectueze o conexiune prin HTTPS la verisign.com si sa se+Completati [[https://​ocw.cs.pub.ro/​courses/​_media/​pc/​laboratoare/lab13-skel.zip|scheletul de cod]] astfel incat sa se efectueze o conexiune prin HTTPS la verisign.com si sa se
 salveze local, intr-un fisier pe disc, pagina home, printr-un apel de tip GET. salveze local, intr-un fisier pe disc, pagina home, printr-un apel de tip GET.
  
pc/laboratoare/13.1589081759.txt.gz · Last modified: 2020/05/10 06:35 by catalin.leordeanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0