This is an old revision of the document!


Laborator 10: TLS și certificate

TLS (Transport Layer Security) reprezintă modul în care un canal TCP nesigur este securizat. TLS asigură un canal sigur (criptat) de comunicare între client și server. În general serverul își validează identitatea folosind un certificat care apoi este folosit și pentru stabilirea cheilor de criptare ale conexiunii.

Un certificat cuprinde o cheie publică, datele de identificare ale serverului și o semnătură care să garanteze asocierea între acea identitate și cheia publică aferentă.

Un certificat este valid dacă este semnat de o autoritate de certificare (CA: Certificate Authority). Această entitate este considerată de încredere de clientul comunicației, iar clientul are acces la certificatul acestei autorități. Cu certificatul acestei autorități, clientul poate verifica semnătura certificatului serverului și, astfel, să se asigure de identitatea serverului.

Investigarea unui certificat

În arhiva de sarcini a laboratorului există un certificat în fișierul houdini.cs.pub.ro.crt-roedunet.

Vrem să afișăm informații despre acest fișier: identificator, semnatar, data expirări, cheia publică. Pentru aceasta folosim comanda

openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -text

Parcurgeți output-ul comenzii și aflați informații despre certificat precum:

  • Semnatarul (issuer)
  • Intervalul de validitate
  • Modulul și exponentul
  • Subiectul (CN: Common Name)
  • Extensii ale certificatului
  • Cheia publică
  • Semnătura

Putem afișa informații punctuale despre certificat solicitând infomații punctuale (doar anumite câmpuri) folosind comanda openssl cu opțiunile aferente:

openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -pubkey
openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -startdate
openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -enddate
openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -dates
openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -issuer
openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -subject
openssl x509 -in houdini.cs.pub.ro.crt-roedunet -noout -modulus

Verificarea unui certificat

Vrem să verificăm faptul că un certificat este semnat valid și că avem acces corect la certificatul CA-ului (sau lanțul de certificate ale CA-ului – certificate chain). De obicei, serverul este configurat să trimită certificatele intermediare clientului pentru ca acesta să poată avea acces la întreg lanțul de certificate.

Verificăm certificatul de mai sus folosind comanda

openssl verify -CAfile ../../terena-ca-chain-2.pem security.cs.pub.ro.crt-roedunet

Certificatul apare expirat, dar din punctul de vedere al semnării este valid.

Pentru certificatele open-source.cs.pub.ro.crt-roedunet și security.cs.pub.ro.crt-roedunet verificați care este certificate chain-ul aferent cu care au fost generate. Adica vedeți care dintre cele două fișiere de tip chain (terena-ca-chain.pem și terena-ca-chain-2.pem sunt cele corespunzătoare.

Urmăriți ce conțin fișierele de tip chain folosind comanda cat.

Pentru a face dump la informațiile dintr-un fișier de tip bundle (cum sunt terena-ca-chain.pem și terene-ca-chain-2.pem) nu avem suport implicit în openssl. Putem însă folosi comanda keytool din suita Java, așa cum este indicat aici. Folosiți keytool pentru a afișa informații despre certificatele de tip bundle.

Conectarea sigură la un server

Folosirea openssl s_client pentru conectarea sigură la un server HTTPS. Parcurs cu wireshark/tcpdump transferul sigur (criptat) și nesigur (plain text)

Investigarea unui certificat la distanță

Conectarea cu openssl s_client și obținut certificate chain-ul de la distanță și validat că e în regulă

Generarea și semnarea unui certificat

Crearea unei chei și a unui CSR; semnarea certificatului folosind “CA”-ul din sala de laborator (vom avea un certificat self-signed), obținerea CRT-ului.

Verificarea unui certificat

Verificarea că CRT-ul corespunde cheii, investigarea sa.

Verificarea CRT-ului și cheii, validat că sunt corespunzătoare, pentru primul certificat investigat (la exercițiul de mai sus).

Configurarea HTTPS pentru un server web

Configurare suport HTTPS pentru serverul web, pentru hostname-ul aferent în Apache cu certificatul generat și semnat la pasul anterior

Configurarea IMAPS pentru un server de IMAP

Instalarea și configurarea IMAPS cu certificatul generat și semnat la pasul anterior

gsr/laboratoare/laborator-10.1452173853.txt.gz · Last modified: 2016/01/07 15:37 by razvan.deaconescu
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