This shows you the differences between two versions of the page.
|
gsr:laboratoare:laborator-09 [2016/12/21 23:24] alexandru.carp [Comunicare client/server necriptata] |
gsr:laboratoare:laborator-09 [2016/12/22 17:13] (current) alexandru.carp [Configurarea HTTPS pentru un server web] |
||
|---|---|---|---|
| Line 24: | Line 24: | ||
| * ''openssl s_server'' va avea rol de server | * ''openssl s_server'' va avea rol de server | ||
| * ''openssl s_client'' va avea rol de client | * ''openssl s_client'' va avea rol de client | ||
| + | |||
| + | Incercati sa porniti ''openssl s_server'' pe portul 12345: | ||
| + | <code>- | ||
| + | $ sudo openssl s_server -accept 12345 | ||
| + | Error opening server certificate private key file server.pem | ||
| + | 140455789008536:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server.pem','r') | ||
| + | 140455789008536:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400: | ||
| + | unable to load server certificate private key file | ||
| + | </code> | ||
| + | |||
| + | Observati ca ''openssl s_server'' nu poate porni, deoarece are nevoie de un certificat de server si de o cheie privata. | ||
| + | Descarcati: | ||
| + | * certificatul ''server.ixlabs.crt'' de [[http://swarm.cs.pub.ro/~carpalex/gsr/ssl/server.ixlabs.crt|aici]] | ||
| + | * cheia privata ''server.ixlabs.key'' de [[http://swarm.cs.pub.ro/~carpalex/gsr/ssl/server.ixlabs.key|aici]] | ||
| + | |||
| + | Apoi, porniti din nou ''openssl s_server'', specificand parametrii ''-cert'' si ''-key'': | ||
| + | <code> | ||
| + | $ openssl s_server -cert server.ixlabs.crt -key server.ixlabs.key -accept 12345 | ||
| + | Using default temp DH parameters | ||
| + | ACCEPT | ||
| + | </code> | ||
| + | |||
| + | Observati ca serverul a pornit cu succes si asteapta conexiuni. | ||
| + | |||
| + | Dintr-o alta console, folositi ''openssl s_client'' pentru a va conecta local pe portul ''12345'': | ||
| + | <code> | ||
| + | $ openssl s_client -connect localhost:12345 | ||
| + | CONNECTED(00000003) | ||
| + | depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development, CN = server | ||
| + | verify error:num=20:unable to get local issuer certificate | ||
| + | verify return:1 | ||
| + | depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development, CN = server | ||
| + | verify error:num=21:unable to verify the first certificate | ||
| + | verify return:1 | ||
| + | [...] | ||
| + | </code> | ||
| + | |||
| + | Observati ca: | ||
| + | * sesiunea se stabileste | ||
| + | * clientul primeste certificatul serverului | ||
| + | * clientul **NU poate valida** certificatul serverului | ||
| + | |||
| + | Pentru a putea valida certificatul serverului, avem nevoie de certificatul CA-ului care l-a semnat. | ||
| + | Descarcati certificatul CA-ului ''ca.crt'' de [[http://swarm.cs.pub.ro/~carpalex/gsr/ssl/ca.crt|aici]] | ||
| + | |||
| + | Apoi, lansati din nou ''openssl s_client'', dar cu parametru ''-CAfile'': | ||
| + | <code> | ||
| + | $ openssl s_client -CAfile ca.crt -connect localhost:12345 | ||
| + | CONNECTED(00000003) | ||
| + | depth=1 C = RO, O = Ixia, OU = Development, CN = Ixia-CA | ||
| + | verify return:1 | ||
| + | depth=0 C = RO, ST = Some-State, O = Ixia, OU = Development, CN = server | ||
| + | verify return:1 | ||
| + | --- | ||
| + | Certificate chain | ||
| + | 0 s:/C=RO/ST=Some-State/O=Ixia/OU=Development/CN=server | ||
| + | i:/C=RO/O=Ixia/OU=Development/CN=Ixia-CA | ||
| + | --- | ||
| + | [...] | ||
| + | Verify return code: 0 (ok) | ||
| + | </code> | ||
| + | |||
| + | Observati ca de data aceasta certificatul este validat. | ||
| + | |||
| + | Similar cu ''nc'', textul introdus in client apare pe server, si invers. | ||
| + | |||
| + | Porniti wireshark sau tcpdump si observati conversatia TCP pe portul 12345. Observati ca datele sunt criptate in cadrul unei sesiuni SSL. | ||
| ===== Configurarea HTTPS pentru un server web ===== | ===== Configurarea HTTPS pentru un server web ===== | ||
| - | Cu certificatul astfel obținut realizați o configurare a unui virtul host pe serverul Apache local (instalați-l dacă nu este instalat) cu suport HTTPS. | + | Folositi certificatul ''server.ixlabs'' pentru a realiza o configurare a unui virtual host pe serverul Apache local (instalați-l dacă nu este instalat) cu suport HTTPS. |
| Pașii pe care trebuie să îi urmați sunt: | Pașii pe care trebuie să îi urmați sunt: | ||
| - | * Crearea unui fișier de configurare pentru hostname-ul ''dorel.ixlabs'' (sau numele aferent domeniului vostru). | + | * Crearea unui fișier de configurare pentru hostname-ul ''server.ixlabs'' |
| - | * Crearea unui fișier de configurare pentru hostname-ul ''dorel.ixlabs'' cu suport HTTPS. | + | * Crearea unui fișier de configurare pentru hostname-ul ''server.ixlabs'' cu suport HTTPS. |
| * Activarea acestora folosind comanda ''a2ensite''. | * Activarea acestora folosind comanda ''a2ensite''. | ||
| * Activarea suport-ului de TLS folosind comanda<code> | * Activarea suport-ului de TLS folosind comanda<code> | ||
| Line 37: | Line 104: | ||
| </code> | </code> | ||
| * Copierea certificatului în directorul ''/etc/ssl/certs/'' și a cheii private în ''/etc/ssl/private/''. | * Copierea certificatului în directorul ''/etc/ssl/certs/'' și a cheii private în ''/etc/ssl/private/''. | ||
| - | * Configuarea suportului de TLS în configurarea ''dorel.ixlabs'' cu suport HTTPS. Vedeți liniile de configurare de [[https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html#configexample|aici]]. | + | * Configurarea suportului de TLS în configurarea ''server.ixlabs'' cu suport HTTPS. Vedeți liniile de configurare de [[https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html#configexample|aici]]. |
| - | * Adăugarea unei intrări în ''/etc/hosts'' pentru numele ''dorel.ixlabs'' cu adresa locală (poate chiar adresa de loopback) ca să aveți rezolvat numele de domeniu. | + | * Adăugarea unei intrări în ''/etc/hosts'' pentru numele ''server'' cu adresa locală (poate chiar adresa de loopback) ca să aveți rezolvat numele de domeniu. |
| + | <note> | ||
| + | **Nota:** Trebuie facuta maparea cu ''server'' si nu cu ''server.ixlabs'' pentru ca browserul se asteapta ca domeniul din URL sa faca match cu CN-ul din certificat, iar acesta este ''server''. | ||
| + | </note> | ||
| * Repornirea serverului web. | * Repornirea serverului web. | ||
| * Încărcați în browser-ul certificatul CA-ului. | * Încărcați în browser-ul certificatul CA-ului. | ||
| - | * Conectarea la serverul web folosind un URL de forma ''%%https://dorel.ixlabs%%'' pentru a valida configurarea corectă a serviciului. | + | * Conectarea la serverul web folosind un URL de forma ''%%https://server%%'' pentru a valida configurarea corectă a serviciului. |
| ===== Configurarea IMAPS pentru un server de IMAP ===== | ===== Configurarea IMAPS pentru un server de IMAP ===== | ||
| Line 49: | Line 119: | ||
| </code> | </code> | ||
| - | Configurați pentru IMAPS certificatul verificat anterior și apoi folosiți un client de e-mail pentru vă conecta la server prin IMAPS. | + | Configurați pentru IMAPS certificatul ''server.ixlabs'' și apoi folosiți un client de e-mail pentru vă conecta la server prin IMAPS. |
| Folosiți și ''openssl s_client'' pentru a verifica folosirea corespunzătoare a certificatului pe server. | Folosiți și ''openssl s_client'' pentru a verifica folosirea corespunzătoare a certificatului pe server. | ||