180 likes | 349 Views
SSL és TLS. Mi a TLS. SSL – Secure Socket Layer TLS – Transport Layer Security Biztonságos transport layer a böngésző és a szerver között SSL v3.0 : Internet Draft (1996) SSL : Netscape 3.0-t megvalósítják a böngészők TLS : RFC 2246 TLS = „ SSL v3.1 ”. Az SSL felépítése. SSL
E N D
Mi a TLS • SSL – Secure Socket Layer • TLS – Transport Layer Security • Biztonságos transport layer a böngésző és a szerver között • SSL v3.0 : Internet Draft (1996) • SSL : Netscape 3.0-t megvalósítják a böngészők • TLS : RFC 2246 • TLS = „SSL v3.1”
Az SSL felépítése SSL Handshake Protocol SSL Change Cipher Spec Protocol SSL Alert Protocol applications (e.g., HTTP) SSL Record Protocol TCP IP
Egyes részek • SSL Handshake Protocol • Megállapodás a titkosítási algoritmusokban és paraméterekben • Kulcs csere • Szerver és esetleg kliens azonosítása • SSL Record Protocol • fragmentáció • tömörítés • üzenet azonosítás és integritás • titkosítás • SSL Alert Protocol • hibaüzenetek (fatális hibák és figyelmeztetések) • SSL Change Cipher Spec Protocol • SSL handshake végének jelzése
Session • SSL session = kliens és szerver összerendelése • Állapottal rendelkezik: biztonsági algoritmusok és paraméterek • Több biztonságos csatornát is tartalmazhat • Az állapot közös az egyes csatornák között • Előny: nem kell a drága egyeztetés sokszor
Session állapot • session azonosító • Tetszőleges byte sorozat – a szerver választja • partner tanusítvány • A partnet X509 tanusítványa • Lehet üres • tömörítési mód • titkosító megadása • egykulcsos titkosító algoritmus (e.g., null, DES, 3DES, …) • Message Authentication Code algoritmus (e.g., MD5, SHA-1) • titkosítás tulajdonságai (e.g., hash méret, …) • master secret • 48-byteosközös titoka kliens és a szerver között • Újraindítható-e • Hasznáható-e újabb kapcsolatok létrehozására • Kapcsolat állapotok
SSL Record Protokoll fragmentáció SSL titkosítatlan szöveg típus verzió hossz tömörítés SSL tömörített típus verzió hossz Üzenet azonosítás és titkosítás SSLtitkosított típus verzió hossz MAC kitöltés
Fejléc • típus • A további részt feldolgozó legmagasabb szintű protokoll • értékei: • titkosítási specifikáció változtatás • figyelmezetés • handshake • alkalmazás adat • verzió • SSL verzió, (3.0) • hossz • Byteban (max: 214+2048)
Titkosítás • Blokk kódolók (CBC mode kitöltéssel) • RC2_40 • DES_40 • DES_56 • 3DES_168 • IDEA_128 • Fortezza_80 • stream kódolók • RC4_40 • RC4_128
SSL Alert protokoll • 2 db 1 byte-os mező • Első mező: fatális vagy csak figyelmeztetés • Második maga az üzenet: • fatális • Váratlan üzenet • A record MAC nem stimmel • Kitömörítési hiba • Handshake nem sikerült • Illegális paraméter • figyelmeztetés • Bezárási értesítés • Nincs tanusítvány • Rossz tanusítvány • Nem támogatott tanusítvány • Visszavont tanusítvány • Lejárt tanusítvány • Ismeretlen tanusítvány • Fatális hiba esetén • Kapcsolat megszakítása • session ID érvénytelenítése nem lehet új kapcsolatot létrehozni benne
SSL Handshake protokol client_hello 1. fázis: Session ID, kulcscsere,MAC és titkosítási algo- Ritmusok és kezdeti véletlenszámok cseréje server_hello certificate 2. fázis: A szerver elküldi a tanúsítványát esetleg elkéri a Kliens tanúsítványát server_key_exchange certificate_request server_hello_done certificate 3. fázis: A kliens ha kérték elküldi a tanúsítványát. Kulcs cserebere client_key_exchange certificate_verify change_cipher_spec finished 4. Fázis: Titkosítási beállítások cseréje, handshake vége change_cipher_spec finished
Szolgáltatások • https 443/tcp http + TLS/SSL • smtps 465/tcp smtp + TLS/SSL smtp 25/tcp STARTTLS kulcsszó (RFC 2487) • imaps 993/tcp imap4 + TLS/SSL imap4 143/tcp STARTTLS kulcsszó (RFC 2595) • pop3s 995/tcp pop3 + TLS/SS pop3 110/tcp STLS kulcsszó (RFC 2595) • ldaps 636/tcp ldap + TLS/SSL • ircs 994/tcp irc + TLS/SSL • nntps 563/tcp nntp + TLS/SSL
Apache 2 SSL • SSL nélkül Listen 80 <VirtualHost *:80> ServerName www.teszt.hu DocumentRoot /var/www/teszt/www CustomLog /var/log/apache2/www_teszt_hu.log clf </VirtualHost>
Apache 2 SSL Listen 443 # Include the SSL module LoadModule ssl_module /usr/lib/apache2-prefork/mod_ssl.so <VirtualHost *:443> ServerName www2.teszt.hu DocumentRoot /srv/www/teszt2/www CustomLog /var/log/apache2/www.log clf # Minimal SSL configuration SSLEngine On SSLCertificateFile /etc/apache2/ssl.crt/teszt.crt SSLCertificateKeyFile /etc/apache2/ssl.key/teszt.key </VirtualHost> • Directory-k létrehozása umask 022 mkdir /etc/apache2/conf/ssl.key mkdir /etc/apache2/conf/ssl.crt mkdir /etc/apache2/conf/ssl.crl • Saját aláírású cert létrehozása openssl req \ -new \ -x509 \ -days 30 \ -keyout /etc/apache2/conf/ssl.key/teszt.key \ -out /etc/apache2/conf/ssl.crt/teszt.crt \ -subj '/CN=Test-Only Certificate'
Apache 2 finomítás • Erőset csak SSLProtocol -all +SSLv2 SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP • Csak SSL-el elérhető directory <Directory /var/www/teszt/www/protected> SSLRequireSSL </Directory> • Csak általam kiadott cerificate-tel SSLVerifyClient requireSSLVerifyDepth 1SSLCACertificateFile conf/ssl.crt/ca.crt
Teszt • Böngészőből: https://www.teszt.hu:443 • openssl s_client –connect www.teszt.hu:443 • Wireshark