Bezpieczeństwo Usług Sieciowych OpenSSL. dr inż. Tomasz Surmacz. 26 listopada 2014



Podobne dokumenty
Konstrukcja urzędów certyfikacji standardu OpenSSL, zarządzanie certyfikatami

OpenSSL - CA. Kamil Bartocha November 28, Tworzenie CA przy użyciu OpenSSL

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL

Instrukcja pozyskiwania certyfikatu

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Stos TCP/IP. Warstwa aplikacji cz.2

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Sieci i Aplikacje TCP/IP. Ćwiczenie nr 7

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

SSL (Secure Socket Layer)

MultiInfo. Certyfikat dostępu do usługi

Wygeneruj 8192-bitowy klucz RSA SHA-256 dla naszego głównego urzędu certyfikacji: ...++

PureFTPd Użycie certyfikatów niekwalifikowanych w oprogramowaniupureftpd. wersja 1.3

ZiMSK. Konsola, TELNET, SSH 1

SSL VPN Virtual Private Network with Secure Socket Layer. Wirtualne sieci prywatne z bezpieczną warstwą gniazd

VSFTPd Użycie certyfikatów niekwalifikowanych w oprogramowaniuvsftpd. wersja 1.3 UNIZETO TECHNOLOGIES SA

Bezpieczeństwo systemów informatycznych

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

POSTFIX (SMTP) + POP3 + SSL. Użycie certyfikatów niekwalifikowanych w oprogramowaniu POSTFIX. wersja 1.4

INTERNET - Wrocław Usługi bezpieczeństwa w rozproszonych strukturach obliczeniowych typu grid

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Tomcat + SSL - Windows/Linux. Instalacja certyfikatów niekwalifikowanych w serwerze Tomcat. wersja 1.1

# katalog, w który zapisywane są certyfikaty crl_dir=$dir/crl

SENDMAIL (SMTP) + POP3 + SSL Użycie certyfikatów niekwalifikowanych w oprogramowaniu Sendmail. wersja 1.2 UNIZETO TECHNOLOGIES SA

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

SENDMAIL (SMTP) + POP3 + SSL Użycie certyfikatów niekwalifikowanych w oprogramowaniu Sendmail wersja 1.3

Tomcat + SSL - Windows/Linux. Instalacja certyfikatów niekwalifikowanych w serwerze Toccat. wersja 1.0 UNIZETO TECHNOLOGIES S.A.

Zdalne logowanie do serwerów

Bezpieczne protokoły Materiały pomocnicze do wykładu

MODEL WARSTWOWY PROTOKOŁY TCP/IP

The OWASP Foundation Session Management. Sławomir Rozbicki.

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Podstawy Secure Sockets Layer

Win Admin Monitor Instrukcja Obsługi

Sieci komputerowe. Zajęcia 4 Bezpieczeństwo w sieciach komputerowych

Konfiguracja OpenVPN w AS30GSM200P. Informator Techniczny Strona 1 z 11

Konfiguracja urządzeń Connectra (SSL VPN) w zintegrowanym środowisku zarządzania Check Point SmartCenter

TelCOMM Wymagania. Opracował: Piotr Owsianko Zatwierdził: IMIĘ I NAZWISKO

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

CEPiK 2 dostęp VPN v.1.7

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Dostęp zdalny

Programowanie w Internecie

PGP - Pretty Good Privacy. Użycie certyfikatów niekwalifikowanych w programie PGP

Zastosowania informatyki w gospodarce Wykład 8

Stunnel - tunelowanie poczty po SSL Data: o godz. 00:01:32 Temat: FreeBSD - oprogramowanie itp.

Polityka Certyfikacji dla Certyfikatów PEMI

Zarządzanie systemami informatycznymi. Bezpieczeństwo przesyłu danych

Zastosowania PKI dla wirtualnych sieci prywatnych

Protokół DHCP. DHCP Dynamic Host Configuration Protocol

Implementacje IPsec - Linuks

Uwierzytelnianie użytkowników sieci bezprzewodowej z wykorzystaniem serwera Radius (Windows 2008)

Public Key Infrastructure (PKI) Krzysztof Boryczko Remigiusz Górecki

Protokół SSL/TLS. Algorytmy wymiany klucza motywacja

Laboratorium nr 6 VPN i PKI

APACHE SSL Linux. Użycie certyfikatów niekwalifikowanych w oprogramowaniu APACHE SSL Linux. wersja 1.5

Wspomaganie certyfikacji witryn internetowych za pomocą urzędów lokalnych

Bezpieczeństwo poczty elektronicznej

Sun Web Server SSL. Użycie certyfikatów niekwalifikowanych w oprogramowaniu Sun Web Server

Problemy z bezpieczeństwem w sieci lokalnej

Protokoły sieciowe - TCP/IP

Protokół SSL/TLS. Patryk Czarnik. Bezpieczeństwo sieci komputerowych MSUI 2009/10. Wydział Matematyki, Informatyki i Mechaniki Uniwersytet Warszawski

APACHE SSL Linux. Użycie certyfikatów niekwalifikowanych w oprogramowaniu APACHE SSL Linux. wersja 1.8

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Certum SSL For cpanel. Instalacja oraz Użycie

Exchange Konfiguracja protokołu SSL/TLS w serwerze pocztowym Exchange wersja 1.0 UNIZETO TECHNOLOGIES S.A.

Konfiguracja klienta Lotus Notes R6 z certyfikatami i kluczami na karcie kryptograficznej lub w pliku.

Sieciowa instalacja Sekafi 3 SQL

Exchange Enterprise Edition 2003 Użycie certyfikatów niekwalifikowanych w oprogramowaniu Microsoft Exchange wersja 1.2 UNIZETO TECHNOLOGIES SA

Wielowarstwowość transmisji w sieciach komputerowych

Metody zabezpieczania transmisji w sieci Ethernet

Java Code Signing UŜycie certyfikatów niekwalifikowanych do podpisywania kodu w technologii Java. wersja 1.2 UNIZETO TECHNOLOGIES SA

Bezpieczeństwo Systemów Komputerowych. Wirtualne Sieci Prywatne (VPN)

Exchange Konfiguracja protokołu SSL/TLS w serwerze pocztowym Exchange wersja 1.0

Konfiguracja OpenVPN Parę słów o VPN i OpenVPN

VPN Virtual Private Network. Użycie certyfikatów niekwalifikowanych w sieciach VPN. wersja 1.1 UNIZETO TECHNOLOGIES SA

Bazy danych i usługi sieciowe

Sieci komputerowe i bazy danych

Zarządzanie sieciami komputerowymi - wprowadzenie

Bezpieczna poczta elektroniczna tunelowanie po protokole SSL

LOTUS DOMINO 7. Użycie certyfikatów niekwalifikowanych w oprogramowaniu LOTUS DOMINO 7 serwer WWW / pocztowy

SET (Secure Electronic Transaction)

APACHE SSL Linux. Użycie certyfikatów niekwalifikowanych w oprogramowaniu APACHE SSL Linux. wersja 1.7

Model warstwowy Warstwa fizyczna Warstwa łacza danych Warstwa sieciowa Warstwa transportowa Warstwa aplikacj. Protokoły sieciowe

Certum SSL For Plesk. Instalacja oraz Użycie

Internet Information Service (IIS) 7.0

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Jednym z najważniejszych zagadnień, z którym może się zetknąć twórca

Exchange Konfiguracja protokołu SSL/TLS w serwerze pocztowym Exchange wersja 1.0

WHEEL LYNX SSL/TLS DECRYPTOR. najszybszy deszyfrator ruchu SSL/TLS

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Procedura uzyskania certyfikatu do ZSMOPL na potrzeby ewaluacji

11. Autoryzacja użytkowników

Program szkolenia: Bezpieczny kod - podstawy

Studium przypadku Case Study CCNA2-ROUTING. Warianty projektów

Bezpieczeństwo systemów informatycznych

Win Admin Monitor Instrukcja Obsługi

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Połączenie VPN aplikacji SSL. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Profile aplikacji SSL 1.3. Konto SSL 1.4. Grupa użytkowników

Transkrypt:

Bezpieczeństwo Usług Sieciowych OpenSSL dr inż. Tomasz Surmacz 26 listopada 2014

SSL Secure Socket Layer szyfruje dane pozwala zabezpieczyć się przed atakami typu Man-in-the-middle korzysta z certyfikatów w celu sprawdzenia tożsamości obu stron Certyfikaty weryfikacja tożsamości obu stron zabezpieczenie przed spoofingiem (podszywaniem się) automatyczne pobieranie certyfikatów podczas nawiązywania połączenia system podpisów Certificate Authorities Korzystanie z SSL W sposób jawny: przez użycie protokołu takiego jak HTTPS przez korzystanie z bibliotek SSL poprzez odpowiednie funkcje Niejawnie: z użyciem TLSWRAP Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 2

SSL Secure Socket Layer Dwa podstawowe cele korzystania z SSL: dwustronne uwierzytelnienie i zapewnienie bezpieczeństwa utworzenie bezpiecznego kanału komunikacyjnego, który mogą wykorzystać wyższe warstwy protokołu Aplikacji Prezentacji Sesji Transportowa Sieciowa Łącza WWW POP FTP Telnet SMTP ARP RARP SSL SMB DNS DHCP SNMP BOOTP TFTP TCP NetBIOS RIP OSPF ICMP SNAP LLC UDP IP (c)ts Fizyczna (c)2001 TS Ethernet, Token Ring, PtP, ATM,... Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 3

SSL/TLS krótka historia rozwoju We wczesnych latach 90 IETF ustanowiła grupę roboczą Web Transaction Security (WTS) Spowodowało to powstanie protokołu warstwy aplikacji nazwanego Secure Hypertext Transfer Protocol (S-HTTP), opisanego w eksperymentalnych RFCs 2659 i 2660 Nieezależnie od tego, Netscape Communications zaproponowało i opatentowało protokół warstwy transportowej nazwany Secure Sockets Layer (SSL) SSL jest umieszczony nad połączeniową warstwą transportową zapewniającą wolny od błędów przesył danych (TCP lub podobna) W 1994 SSL 2.0 został zaimplementowany przez Netscape Communications w przeglądarce Netscape Navigator Microsoft zaproponował podobną koncepcję nazwaną Private Communication Technology (PCT) i poprawioną/rozbudowaną wersję Secure Transport Layer Protocol (STLP) w roku 1995 W 1996 powstała specyfikacja SSL 3.0 W 1999 IETF założył grupę roboczą Transport Layer Security (TLS) (RFC 2246), aby rozwiązać spór między Netscape Communications (SSL) i Microsoftem (PCT/STLP) Dalszy rozwój skupił się na TLS, owocując standardem TLS 1.1 (RFC 4346) w kwietniu 2006, jak również protokołem Datagram TLS 1.0 (DTLS) (RFC 4347) W kwietniu 2008 została ogłoszona specyfikacja TLS 1.2 RFC 5246 Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 4

Ograniczenia/wady SSL SSL/TLS mają zapewniać bezpieczną komunikację pomiędzy dwoma punktami SSL/TLS nie są kompletną platformą bezpieczeństwa nie rozwiązują problemów takich jak: SQL injection Cross-site scripting (XSS) Cross-site request forgery (CSRF) Korzystanie z SSL/TLS może powodować problemy z implementacją polityki bezpieczeństwa (content screening) i może wymagać instalacji proxy SSL/TLS Ataki MITM W teorii zabezpieczenie przed atakami Man in the Middle W praktyce problemy z zarządzaniem certyfikatami i strukturą ich uwierzytelniania Błędy w kodzie SSL Błędy w interpretowaniu kodów błędu weryfikacji certyfikatów Ostatnie odkrycia (8.04.2014) Heartbleed attack (OpenSSL 1.0.1 do 1.0.1e włącznie) Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 5

Definicje i standardy ANSI X.509 certyfikaty RFC 2246 TLS RFC 2487 SMTP over TLS RFC 2818 HTTPS (https://..., port 443) RFC 4346 TLS 1.1 RFC 5246 TLS 1.2 Wykorzystanie SSL OpenSSL (http://www.openssl.org/) Apache SSL (http://www.apache-ssl.org/) mod ssl (http://www.modssl.org/) Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 6

SSL Konfiguracja Sprawdzenie wersji SSL i dostępnych metod szyfrowania linux% openssl version -a OpenSSL 0.9.8o 01 Jun 2010 platform: debian-amd64 options: bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) blowfish(ptr2)... linux% openssl ciphers -v DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1 DES-CBC3-MD5 SSLv2 Kx=RSA Au=RSA Enc=3DES(168) Mac=MD5 AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1... Sprawdzenie gdzie SSL szuka swoich plików: openssl version -d (zwykle /usr/lib/ssl) openssl.conf konfiguracja CA, certyfikatów, wartości domyślne cert.pem zbiór uznawanych certyfikatów (Verisign, Thawte) podkatalog certs pojedyncze pliki.pem z certyfikatami CA symlinki w katalogu certs do przechowywanych certyfikatów. Nazwy hash certyfikatu Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 7

SSL Certyfikaty Certyfikat jest odpowiednikiem pary kluczy w kryptografii z kluczem publicznym Certyfikat publiczny oprócz publicznej części klucza zawiera informacje o jego właścicielu: Certificate Name identyfikator certyfikatu Expiry Date Data wygaśnięcia ważności (z reguły rok od utworzenia certyfikatu) Common Name nazwa intytucji/osoby (widoczna jako issued to/wystawiony dla ) Email Address adres email osoby kontaktowej (administrator związany z serwerem/domeną) Organisation nazwa instytucji, dla której wystawiany jest certyfikat Department dział/oddział/jednostka organizacyjna City / Town miasto związane z instytucją/oddziałem State / Province województwo itp. Country kraj Private Key Length długość klucza prywatnego: obecnie zalecane: 2048 bitów, minimum 1024 A także: numer wersji, sumer seryjny, algorytm użyty do podpisania, instytucję podpisującą (issuer), czas ważności, klucz publiczny Część publiczna certyfikatu musi być podpisana przez CA (Certificate Authority) lub samodzielnie Część prywatna z definicji nie powinna być nigdzie publikowana i pozostać tajna Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 8

SSL Certyfikaty Utworzenie certyfikatu openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem Większość pytań oczywista (Country Name, State, City, itd.) Common Name nazwa DNS serwera lub jego CNAME Można tworzenie certyfikatu zautomatyzować dzięki opcji -subj: openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem \ -subj /C=PL/ST=Dolnoslaskie/L=Wroclaw/CN=www.jakasfirma.pl Minimalistyczny certyfikat musi zawierać pole CN, pozostałe są opcjonalne. Automatyzacja za pomocą -subj /C=PL kraj /ST=Dolnoslaskie stan, województwo, region, itp, /L=Wroclaw locality : miasto /O=Politechnika Wroclawska organizacja /OU=Wydzial Elektroniki organizational unit jednostka organizacyjna, oddział, itp. /CN=www.pwr.wroc.pl common name DNS name /emailaddress=jakis.adres@pwr.wroc.pl adres email osoby kontaktowej Sprawdzenie certyfikatu: linux% openssl verify mycert.pem mycert.pem: /C=PL/ST=Doln/L=Wroclaw/O=PWr/OU=Elektronika/CN=www.pwr.wroc.pl/emailAddress=Jakis.Adres@pwr.wroc.pl error 18 at 0 depth lookup:self signed certificate OK Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 9

SSL podpisywanie certyfikatu ➊ Tworzenie certyfikatu to wygenerowanie certificate requests (dokładniej: certificate signing request ) openssl req -new -key privkey.pem -out cert.csr Sprawdzenie treści tego żądania: openssl req -in cert.csr -noout -text ➋ Tak utworzone żądanie podpisu (plik cert.csr) może być wysłane do CA lub można je samodzielnie podpisać, jeśli dysponujemy własnym CA # Własne CA w katalogu democa (democa/cacert.pem, democa/private/cakey.pem) openssl ca -policy policy_anything -out newcert2.pem -infiles newreq.pem ➊ Wygenerowanie samodzielnie podpisanego certyfikatu: openssl genrsa -des3 -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 Pierwsza linia generuje klucz. Druga certyfikat. Opcja -des3 powoduje zabezpieczenie klucza hasłem (bez niej klucz bez hasła) Jeśli certyfikat/klucz zabezpieczony hasłem ma być używany przez serwer, będzie konieczne każorazowe odblokowanie go po restarcie aplikacji. Sprawdzenie informacji: openssl x509 -text -in cacert.pem Wybiórcze informacje dodając opcje -issuer, -subject, -dates, -hash czy -fingerprint Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 10

SSL Własne CA Do utworzenia/zarządzania własnym CA najlepiej posłużyć się skryptem CA.pl lub CA.sh (standardowo w katalogu /usr/lib/ssl/misc/) Domyślna konfiguracja z /usr/lib/ssl/openssl.cnf wskazuje na katalog./democa certyfikaty CA, baza podpisanych certyfikatów i inne pliki Inną konfigurację można wskazać ustawiając zmienną środowiskową OPENSSL CONF Podstawowe użycie: CA -newca utworzenie nowego CA CA -newreq [-nodes] nowe żądanie (nie podpisany certyfikat) CA -sign podpisanie certyfikatu Podpisuje żądanie z pliku newreq.pem zapisując wynik w newcert.pem Nowo podpisany certyfikat trafia także do bazy danych CA (katalog democa/newcerts/) Komunikat failed to update database oznacza, że podpisywany certyfikat już istnieje w bazie (Usunięcie starego: openssl ca -revoke xyz.crt) Domyślne wartości (np. countryname default=au) używane przez CA, a także przy generowaniu certyfikatów, można zmienić modyfikując plik /usr/lib/ssl/openssl.cnf Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 11

Certyfikaty przykłady Utworzenie cert-request, podpisanie go przez CA: % openssl req -new -key privkey.pem -out new4.csr % openssl ca -policy policy_anything -out newcert4.pem -infiles new4.csr Using configuration from /usr/lib/ssl/openssl.cnf Enter pass phrase for./democa/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: a7:aa:d5:ee:0e:ce:77:d0 Validity Not Before: Nov 1 20:36:03 2011 GMT Not After : Oct 31 20:36:03 2012 GMT Subject: countryname = PL organizationname = ccc stateorprovincename = aaa organizationalunitname = ddd localityname = bbb commonname = eee X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Subject Key Identifier: CA:B1:FD:89:DD:04:5F:A0:E3:9E:C7:50:3A:01:88:1F:8F:9E:8F:E9 X509v3 Authority Key Identifier: keyid:bc:7d:a2:9b:2d:fa:f9:51:6e:73:82:2b:30:02:ec:e3:33:2a:d7:40 Certificate is to be certified until Oct 31 20:36:03 2012 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 12

Sprawdzenie podpisanego certyfikatu: democa% openssl x509 -text -in newcerts/a7aad5ee0ece77d0.pem Certificate: Data: Version: 3 (0x2) Serial Number: a7:aa:d5:ee:0e:ce:77:d0 Signature Algorithm: sha1withrsaencryption Issuer: C=PL, ST=Dolnoslaskie, O=Demo CA org, CN=laptok CA/emailAddress=laptok@laptok Validity: Not Before: Nov 1 20:36:03 2011 GMT, Not After : Oct 31 20:36:03 2012 GMT Subject: C=PL, ST=aaa, L=bbb, O=ccc, OU=ddd, CN=eee Subject Public Key Info: Public Key Algorithm: rsaencryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:d4:be:ee:2a:ef:df:e7:4a:aa:9b:0d:65:7b:f7:... 2d:28:ae:ad:7e:08:b0:70:a6:28:7d:8c:e5:3f:ac:15:5d Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Subject Key Identifier: CA:B1:FD:89:DD:04:5F:A0:E3:9E:C7:50:3A:01:88:1F:8F:9E:8F:E9 X509v3 Authority Key Identifier: keyid:bc:7d:a2:9b:2d:fa:f9:51:6e:73:82:2b:30:02:ec:e3:33:2a:d7:40 Signature Algorithm: sha1withrsaencryption a8:ea:f2:52:ea:83:45:44:0b:06:6b:9d:30:6e:ae:2c:7b:be:... 03:98:74:0f:90:d5:43:08:93:c6:b6:09:b4:ad:9c:08:d5:aa:cb:6c -----BEGIN CERTIFICATE----- MIIDPDCCAqWgAwIBAgIJAKeq1e4OznfQMA0GCSqGSIb3DQEBBQUAMGwxCzAJBgNV... nezxzqmbrtwvhbl5iheo2tk8fwspm6iii1zwbo+euhbjyfpojal9jjlmj1gdmhqp knvdcjpgtgm0rzwi1arlba== -----END CERTIFICATE----- Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 13

SSL Wykorzystanie certyfikatów Wykorzystanie w serwerze Apache: Konfiguracja /etc/apache/mod ssl.conf SSLCertificateKeyFile /etc/apache/ssl.key/server.key SSLCertificateFile /etc/apache/ssl.crt/server.crt W tych 2 plikach należy umieścić wygenerowany wcześniej klucz oraz podpisany certyfikat. Jeśli klucz jest zabezpieczony hasłem, każdorazowe uruchomienie serwera będzie wymagało jego odblokowania Odblokowanie klucza i zapisanie wersji bez hasła: openssl rsa < server.key > unencrypted.key Po stronie klienta (zdalny dostęp do serwera po HTTP) Zdalne pobranie certyfikatu serwera: openssl s_client -connect ad.res.serwe.ra:443 \ sed -ne /-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p > cert.pem Sprawdzenie zawartości certyfikatu: openssl x509 -noout -subject -dates -in cert.pem openssl x509 -noout -text -in cert.pem Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 14

SSL Using client certificates Certyfikaty klienckie: Certyfikaty klienckie są tworzone w taki sam sposób Muszą być podpisane przez CA rozpoznawane przez serwer Autoryzacja dostępu działa bazując na weryfikacji podpisu certyfikatu a następnie porównaniu treści certyfikatu (niektórych pól) z wymaganiami Reguły dostępu w konfiguracji modułu mod ssl Korzystanie z cetryfikatów klienckich Apache może wymusić stosowanie certyfikatów przez wszystkich klientów Niektóre -e mogą wymagać certyfikatów do dostępu, podczas gdy reszta katalogów serwera jest dostępna dla wszystkich, także nie autoryzujących dostępu certyfikatami. Serwer może udostępniać pliki/katalogi na podstawie nazwy użytkownika w certyfikacie, albo dowolnego innego pola certyfikatu (np. nazwy organizacji), pozwalając w ten sposób na dostęp grupowy Więcej informacji: (http://httpd.apache.org/docs/2.2/ssl/ssl howto.html.en#upgradeenc) Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 15

SSL certyfikat klienta Certyfikat klienta to nic innego jak zwykły certyfikat podpisany przez odpowiednie CA i zapisany w formacie PKCS12: ➊ Utworzenie klucza (user.key) oraz certyfikatu (user.csr) to wygenerowanie certificate signing requests. Tak utworzony klucz będzie zabezpieczony hasłem. Bez hasła: -nodes openssl req -new -newkey rsa:1024 -keyout user.key -out user.csr Sprawdzenie treści tego żądania: openssl req -in user.csr -noout -text ➋ Podpisanie tego żądania za pomocą klucza CA: # Własne CA w katalogu democa (democa/cacert.pem, democa/private/cakey.pem) openssl ca -policy policy_anything -out user.pem -infiles user.csr ➌ Połączenie podpisanego certyfikatu (user.pem) i klucza (user.key) do jednego pliku (user2.pem): cat user.key user.pem > user2.pem ➍ Eksport certyfikatu użytkownika do pliku PKCS12: openssl pkcs12 -export -out user.pfx -in user2.pem -name "User Cert" Enter pass phrase for user2.pem: ****** Enter Export Password: ****** Verifying - Enter Export Password: ****** Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 16

Plik user.pfx zawiera certyfikat i klucz uzytkownika w formacie PKCS12. Sprawdzenie zawartości: openssl pkcs12 -in user.pfx -nodes Enter Import Password: MAC verified OK Bag Attributes friendlyname: User Cert localkeyid: 84 EB F1 51 33 40 55 62 08 EC 99 86 FC E5 68 70 77 87 59 E4 subject=/c=pl/st=aaaa/l=bbbb/o=cccc/ou=dddd/cn=user Name/emailAddress=user@here issuer=/c=pl/st=dolnoslaskie/o=demo CA org/cn=laptok CA/emailAddress=laptok@laptok -----BEGIN CERTIFICATE----- MIIC3DCCAkWgAwIBAgIJAKeq1e4OznfRMA0GCSqGSIb3DQEBBQUAMGwxCzAJBgNV... Wo4MSI19bUnc3Fojovg8CQ== -----END CERTIFICATE----- Bag Attributes friendlyname: User Cert localkeyid: 84 EB F1 51 33 40 55 62 08 EC 99 86 FC E5 68 70 77 87 59 E4 Key Attributes: <No Attributes> -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,971347A4DFA8E807 Bo5YL9BPbiI7iIyppQNnXe3QJCpscKNVQFs3ZyHPlExvZZ+L55V6aIeD2IRF8hkq... -----END RSA PRIVATE KEY----- Plik user.pem (krok ➋) zawiera certyfikat użytkownika podpisany przez CA: Issuer: C=PL, ST=Dolnoslaskie, O=Demo CA org, CN=laptok CA/emailAddress=laptok@laptok Subject: C=PL, ST=aaaa, L=BBBB, O=cccc, OU=DDDD, CN=User Name/emailAddress=user@here Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 17

LITERATURA SSL Secure Socket Layer Literatura [1] T. Dierks and C. Allen. The TLS Protocol Version 1.0. RFC 2246 (Proposed Standard), January 1999. Obsoleted by RFC 4346, updated by RFCs 3546, 5746, 6176. [2] T. Dierks and E. Rescorla. The Transport Layer Security (TLS) Protocol Version 1.2. RFC 5246 (Proposed Standard), August 2008. Updated by RFCs 5746, 5878, 6176. [3] E. Rescorla and N. Modadugu. Datagram Transport Layer Security. RFC 4347 (Proposed Standard), April 2006. Updated by RFC 5746. [4] E. Rescorla and A. Schiffman. Security Extensions For HTML. RFC 2659 (Experimental), August 1999. [5] E. Rescorla and A. Schiffman. The Secure Hyper- Text Transfer Protocol. RFC 2660 (Experimental), August 1999. Bezpieczeństwo Usług Sieciowych 2014/2015 OpenSSL, Tomasz Surmacz 18