varne spletne storitve z uporabo x.509 certifikatov in ssl/tls povezave

14
Varne spletne storitve z uporabo X. 509 certifikatov in SSL/TLS povezave Oto Brglez, junij 2011

Upload: oto-brglez

Post on 24-Jan-2015

1.538 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Varne spletne storitve z uporabo X.509 certifikatov in SSL/TLS povezave

Oto Brglez, junij 2011

Page 2: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

PovzetekV seminarski nalogi bom predstavil X.509 certifikate in njihovo uporabo pri varni SSL/TLS povezavi. Seminarska naloga bo v prvem delu predstavila ključne pojme in njihovo delovanje v drugem delu pa prikaže primer delovanja spletne strani, ki uporablja avtentifikacijo z uporabo podpisanih certifikatov. Naloga opisuje tudi primer konfiguracije Apache HTTP strežnika za delo z certifikati na operacijskem sistemu Ubuntu (10.4 LTS).

Seminarska naloga je bila sestavljena za predmed Varnost in Zaščita podatkov na FERI MB. Junij 2011.

AbstractThis project is intended to introduce reader into X.509 certificates and their useage with SSL/TLS connection. Project at first introduces reader to security topic. Later it shows demonstration of certificate based application and in the end it shows how to configure Apache HTTP server to use secure connection and client certificates for single sign on authentication.

Page 3: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

KazaloTransport Layer Security (TLS) in Secure Sockets Layer (SSL)! 3

Delovanje TLS protokola! 3

Zaupljive organizacije - Certification Authorities (CA)! 4

Ponudniki! 4

X.509! 4

Certifikati! 4

Spletna aplikacija za demonstracijo delovanja - MeSecure ! 5

Delovanje! 5

Javni - nevarovan - pogled! 5

Zasebni - varovan - pogled! 6

Zasebni dostop za uporabnike certifikata! 7

Konfiguracija strežnika za uporabo X.509! 9

Generiranje lastne zaupljive organizacije / Certificate Authority (CA)! 9

Priprava strežniškega certifikata! 10

Priprava SSL/TLS klientovega certifikata za avtentifikacijo! 11

Konfiguracija spletnega strežnika Apache! 12

Zaključek! 13

Viri! 13

Oto Brglez! Varne spletne storitve

2

Page 4: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Transport Layer Security (TLS) in Secure Sockets Layer (SSL)TLS in njegov predhodnjih SSL sta kriptografska protokola, ki omogočata varno kriptirano povezavo preko spleta. TLS in SSL povezavi kriptirata segmente omrežne povezave “transportnega sloja”. Oba protokola uporabljata simetrično kriptografijo za zagotavljanje zasebnosti ter kombinacijo javno/zasebnega ključa.

TLS in SSL protokola sta uporabljena za varno komunikacijo pri spletne brskanju, elektronski pošti, elektronskih faksih, komunikacijskih protokolih in VoIP sistemih. TLS je IETF protokol, ki ga definira RFC 5246 in je zasnovan na na predhodnjiku SSL katerega specifikacijo je razvilo podjetje Netscape.

Delovanje TLS protokolaTLS protokol med strežnikom in odjemalcem poteka v večih varnih korakih in tako onemogoča prisluškovanje povezavi oziroma posredovanju tretji osebi/storitvi

Strežnik in odjemalec med sabo komunicirata z uporabo t.i “handshaking” procedure - rokovalne procedure. Med proceduro klient se klient in strežnik strinjata z različnimi parametri za vzpostavitev varne povezave.

• Sporazumevanje/rokovanje se začne, ko se klient poveže na strežnik, ki podpira TLS in le ta zahteva vzpostavitev varne povezave. V tem koraku pošlje strežniku tudi seznam podprtih mehanizmov kodiranja, ki jih razume (“hash funkcij” in algoritmov).

• Iz nabora podprtih mehanizmov strežnik izbere tistega, ki je najmočnejši oziroma izbere tistega, ki je nastavljen kot najmočnejši na strežniku. O svoji odločitvi obvesti klienta

• Strežnik pošlje nazaj svojo identiteto v obliki digitalnega certifikata. Certifikat običajno vsebuje ime strežnika, podatke o zaupljivi organizaciji (Certificate Authority - CA) in strežnikov javni ključ.

• Klient lahko ob prejetju odgovora preveri pri zaupljivi organizaciji (CA) veljavnost digitalnega potrdila. Ob neuspešni veljavnosti potrdila je lahko povezava prekinjena oziroma se lahko nadaljuje ob opozorilu.

• Za generiranje varnih sejnih ključev klient kriptira naključno število z strežnikovim javnim ključem. Rezultat v naslednjem koraku posreduje strežniku. Strežnik je edina entiteta, ki lahko dekriptira vsebino z uporabo svojega zasebnega ključa

• Z uporabo naključega števila obe strani generirata sredstva za kriptiranje in dekriptiranje.

S tem je zaključeno rokovanje in obe strani lahko sedaj uporabljata varno povezavo, ki je kriptirana/dekriptirana z uporabo sredstev, ki sta jih pridobili ob zadnjem koraku. Varna povezava je mogoča do prekinitve povezave.

Če katerikoli od zgornjih korakov spodleti, se varna povezava med obema stranema ne vzpostavi.

Trenutna aktualna različica protokola SSL je 3.0, oblikovana leta 1996. Aktualna različica protokola TLS je 1.2 (SSL 3.3) med drugim omogoča kombinacijo MD5/SHA-1 enosmernega kodiranja vsebine.

Oto Brglez! Varne spletne storitve

3

Page 5: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Zaupljive organizacije - Certification Authorities (CA)V kriptograviji je CA organizacija, ki izdaja digitalna potrdila. CA je organizacija, ki ji obe stranki (strežnik/odjemalec) zaupata kot tretji osebi, ki sodeluje med komunikacijo. Kot del infrastrukture javnega ključa (PKI), CA preveri z registracijsko avtoriteto RA informacije stranke pri izdaji digitalnega potrdila.

Odvisno od implementacije PKI, certifikati vključujejo lastnikov javni ključ, datum poteka certifikata, ime avtorja in druge podatke. Veljavnost certifikata se(lahko) vedno preveri pri vrhnjem izdajatelju. Večina CA za svoje storitve zaračunava, obstajajo pa tudi CA-ji katerih storitve so brezplačne.

Za potrebe razvoja velikokrat pri izdaji digitalnih potrdil ustvarimo svoj “CA” oziroma simuliramo svoj CA. Tako so strežniška potrdila podpisana pri isti entiteti, ki jih tudi uporablja.

PonudnikiPrimer CA organizacije v Sloveniji je Poštarca (Pošta Slovenije). ki omogoča kvalificirano izdajo in potrjevanje digitalnih ključev za pravne in fizične osebe. Poštarca tako ponuja kvalificirana digitalna podtrila, ki so namenjena posameznikom in pravnim oseban za varno opravljanje storitev. Vsa digitalna potrdila, ki jih izdajo sami oziroma preko njih druge organizacije so tako vredne zaupanja.

Ponudniki CA po svetu so globalni ali lokalni in poleg CA storitev opravljajo še druge. Če želi podjetje postati CA mora prestajati redne varnostne revizije (primer WebTrust for Certificate Authorities), da je lahko zapisano v seznamu varnih izdajateljev v spletnih brskalnikih. V sodobnem spletnem brskalniku je preko 50 root CA-jev. Največji ponudnik CA storitev z svojimi podizvajalci je VeriSign z 47% tržnim deležem

X.509V kriptografiji je X.509 ITU-T standard za PKI (public key infrastrucutre) infrastrukturo za single sing-on (SSO) - enotno prijavo in PMI (Privilage Management Infrastructure). X.509 specificira med drugim standarde za javne ključe, zavrnjene ključe, atributske certifikate in algoritme za certificiranje/validacijo.

X.509 je bil zasnovan leta 1988 skupaj z X.500 standardom. Predpostavlja striktno hierarhični sistem zaupljivih organizacij (CA) za izdajo certifikatov. Kar je sicer drugače “web of trust” modelu kot je recimo PGP, kjer je lahko vsakdo (ne samo CA) podpisovalec in validator tujih ključev.

CertifikatiV certifikatnem sistemu X.509, CA izda potrdilo, ki vsebuje kavni ključ z specifičnim DN (Distingushed name) v X.500 tradiciji oziroma AN (Alternative name) kot recimo email naslov ali DNS zapis.

Izdani certifikati se namestijo po organizaciji v poštne odjemalce, spletne brskalnike in drugo programsko opremo. Certifikati so sicer med računalniki prenosljivi, običajno so zaščiteni z geslom. Običajni certifikati za spletne brskalnike so kodirani v PEM formatu, ki uporablja ASCII znake potem pa so kodirani še v binarni PKCS#12 format (certifikati imajo običajno končnico *.p12). Certifikate lahko namestimo lokalno v brskalnik ali globalno na sistem dosegljivo vsem oziroma specifičnemu uporabniku sistema.

Oto Brglez! Varne spletne storitve

4

Page 6: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Spletna aplikacija za demonstracijo delovanja - MeSecureMeSecure je preprosta odprtokodna spletna aplikacija, ki omogoča prikaz podatkov digitalnih potrdil, ki sem jo napisal v jeziku PHP in vsebuje tudi konfiguracijo Apache HTTP strežnika za uporabo X.509 certifikatov z TLS/SSL v3. Izvorna koda projekta je dosegljiva na spletu na naslovu https://github.com/otobrglez/MeSecure.

DelovanjeSpletna stran deluje na naslovu http://mesecure.banka.si (domena je seveda interna in je dosegljiva samo znotraj omrežja samo za potrebe testiranja/razvoja). Aplikacija prikaže z uporabo PHP-ja strežniške spremenljivke, ki jih Apache dobi iz varne seje (prikazuje $_SERVER spremenljivko).

Aplikacija je konfigurirana tako, da ima javni pogled na http://mesecure.banka.si/, do katerega lahko pridemo vsi brez TLS/SSL povezave. Varni pogled na https://mesecure.banka.si/ kjer je uporabljena TLS/SSL povezava in pot znotraj varnega pogleda na katerem je zahtevan zasebni certifikat z ustreznimi vrednostmi na https://mesecure.banka.si/secure/.

Delovanje spletne aplikacije je bilo preizkušeno na brskalnikih Google Chrome 11.0 in Mozilla Firefox 5.0 na operacijskem sistemu Mac OS X 10.6.7. Na strežniku pa z Ubuntu 10.4.2 LTS (Server) in spletnim strežnikom Apache 2.2.14 z PHP 5.3.2 in OpenSSL 0.9.8. Virtualizirano na VMWare Fusion 2.0.

Javni - nevarovan - pogled

Pri javnem pogledu so vidne vse običajne spremenljivke, ki vsebujejo recimo HTTP_HOST=mesecure.banka.si, SERVER_PORT= 80. Brskalnik stran prikaže kot vsako drugo.

Slika 1. Slika aplikacije. Javni pogled aplikacije Slika 2. Slika informacij o strani v Google Chrome

Oto Brglez! Varne spletne storitve

5

Page 7: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Zasebni - varovan - pogledPri prvi menjavi javnega v zasebni pogled se zgodi vzpostavitev varne povezave, kjer nam strežnik ponudi svoj certifikat - ki pa sem ga podpisal sam, zato nas na to “varnostno napako” seveda sistem opozori.

Po sprejemu certifikata se vzpostavi varna povezava, katere podatki so so prikazani na spletni strani. Med temi podatki vidimo, da se uporablja SSL_CIPHER=dhe-rsa-aes256-sha, SSL_PROTOCOL=v3, da je certifikat podpisan iz moje strani kot “MeSecure CA” in drugo.

Slika 4. Varnostno opozorilo, ki nas opozori, da je certifikat nepodpisan s strani veljavne CA in da mu kot takemu ni priporočljivo zaupati.

Slika 5. Podatki o strani razkrijejo informacije o napaki in dodatne informacije o ključu, ki se uporablja za šifrirano povezavo

Po uspešnem sprejemu strežniškega certifikata lahko le tega sprejmemo za vedno oziroma lahko dodamo izjemo, ki bo vedno dovolila sprejem nepodpisanega certifikata za to spletno mesto. V primeru, da bi imel strežnik veljaven certifikat se omenjena napaka nebi pojavila in bi brskalnik jasno pokazal, da gre za zaščiteno spletno stran.

Oto Brglez! Varne spletne storitve

6

Page 8: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Zasebni dostop za uporabnike certifikataOb obisku poti, ki je zavarovana z uporabo zasebnega certifikata se v brskalniku pokaže okno, ki nam omogoča izbor poljubnega/specifičnega zasebnega certifikata s pomočjo katerega lahko vstopimo v stran. Spletna aplikacija zahteva veljavni zasebni certifikat, ki vsebuje vsebino MeSecure. V primeru, da certifikata ne posedujemo nam je dostop do strani onemogočen.

Certifikat običajno prejmemo od svoje organizacije in ga namestimo v brskalnik in/ali sistem. Sam sem ga namestil v Apple Keychain, program, ki je del sistema Apple OS X in je namenjen opravljanju certifikatov, gesel in drugih identitet.

Slika 6. Dodajanje PKCS#12 zasebnega certifikata v Apple Keychain. Pri dodajanju moramo vpisati geslo certifikata.

Slika 7. Pregled uvoženega certifikata, ki sem ga izdal kot MeSecure CA

Po uspešnem uvozu certifikata lahko ponovno obiščem spletno stran in na seznamu certifikatov izberem “Oto Brglez - MeSecure Certifikat”, ki je veljaven certifikat za dostop do spletne strani.

Oto Brglez! Varne spletne storitve

7

Page 9: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Spletna aplikacija MeSecure mi sedaj z uporabo PHP funkcije openssl_x509_parse odkodira klientov certifikat in prikaže uporabnikovo ime in vrednosti, ki so shranjene v ključu. Le te vrednosti lahko kasneje uporabimo za nadalnjo avtentifikacijo uporabnika.

Slika 8. Ogled zasebnega certifikata znotraj spletne aplikacije. S pomočjo teh podatkov lahko gradimo sledeče varnostne tokove.

Oto Brglez! Varne spletne storitve

8

Page 10: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Konfiguracija strežnika za uporabo X.509Navodila so pripravljena za operacijski sistem Ubuntu in OpenSSL orodja. Principi za izdajo certifikatov so v osnovi podobni, vendar lahko uporabimo različna orodja.

Generiranje lastne zaupljive organizacije / Certificate Authority (CA)Priprava zasebnega CA ključa in zasebnega CA X.509 certifikata.

Ustvarimo zasebni ključ dolžine 2048 z imenom my-ca.key# openssl genrsa -des3 -out my-ca.key 2048

Ustvarimo nov X.509 certifikat, ki bo veljal 10 let. Pri izdaji novega certifikata moramo paziti da za Common Name uporabimo veljaven FDQN strežnika (V mojem primeru mesecure.banka.si)# openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt

Certifikat si lahko pogledamo z slednjim ukazom# openssl x509 -in my-ca.crt -text -noout

--- IZPIS ---Certificate: Data: Version: 3 (0x2) Serial Number: 8e:8f:e6:60:e8:f0:f0:fa Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=Some-State, L=Maribor, O=MeSecure, OU=Certificate Authority, CN=MeSecure CA/[email protected] Validity Not Before: Jun 2 03:31:23 2011 GMT Not After : May 30 03:31:23 2021 GMT Subject: C=US, ST=Some-State, L=Maribor, O=MeSecure, OU=Certificate Authority, CN=MeSecure CA/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:c5:11:3a:40:92:3c:4c:8a:04:73:4a:d1:c9:96: b2:a3:c9:47:41:65:95:ff:b4:c0:24:1d:c3:41:2f: ... odstranjeno zaradi preglednosti.... 69:71:da:6a:60:d8:d7:10:23:29:7b:fa:c5:c5:e2: 4e:bd Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 9D:82:73:C9:2B:4F:C2:63:2E:38:B5:D4:BB:4A:74:92:5E:2F:FF:13 X509v3 Authority Key Identifier: keyid:9D:82:73:C9:2B:4F:C2:63:2E:38:B5:D4:BB:4A:74:92:5E:2F:FF:13 DirName:/C=US/ST=Some-State/L=Maribor/O=MeSecure/OU=Certificate Authority/CN=MeSecure CA/[email protected] serial:8E:8F:E6:60:E8:F0:F0:FA

X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 45:d0:01:81:d6:fa:32:dc:4f:b6:ec:37:d4:7d:13:1f:21:e1:! ... odstranjeno zaradi preglednosti .... ca:24:c1:fc

--- /IZPIS ---

Oto Brglez! Varne spletne storitve

9

Page 11: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Priprava strežniškega certifikataSedaj moramo pripraviti X.509 certifikat in pripadajoči zasebni ključ. Certifikat bomo naredili tako, da bomo izdali “Certificate request” - zahtevo po certifikatu, ki jo bomo potem podpisali s svojo CA. Seveda bo to za produkcijo naredila zunanja CA.

Generiranje zasebnega RSA s 1024 modus biti. Nova datoteka ima ime mars-server.key# openssl genrsa -des3 -out mars-server.key 1024

Generiranje certifikata kot novo zahtevo.# openssl req -new -key mars-server.key -out mars-server.csr

Podpis certifikata z našim CA. Dobimo mars-server.crt certifikat.# openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650

Dobljeni certifikat si lahko pogledamo.# openssl x509 -in mars-server.crt -text -noout

--- IZPIS ---Certificate: Data: Version: 1 (0x0) Serial Number: cf:d1:e6:ed:85:7a:8a:71 Signature Algorithm: sha1WithRSAEncryption Issuer: C=US, ST=Some-State, L=Maribor, O=MeSecure, OU=Certificate Authority, CN=MeSecure CA/[email protected] Validity Not Before: Jun 2 03:34:19 2011 GMT Not After : May 30 03:34:19 2021 GMT Subject: C=US, ST=Some-State, L=Maribor, O=MeSecure, OU=Web Services, CN=mesecure.banka.si/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:a9:95:97:27:61:8c:63:6e:7b:9d:fb:10:0b:aa: 6c:92:76:f6:85:2c:45:29:d9:50:91:97:cc:ff:20: ... odstranjeno zaradi preglednosti ... ba:2a:3d:53:77:d1:6b:88:73:51:75:81:ee:1d:11: 88:67:fe:f5:dc:88:4c:54:8b Exponent: 65537 (0x10001) Signature Algorithm: sha1WithRSAEncryption 0a:eb:9d:32:c4:99:a4:a2:96:53:29:7e:8f:f4:a5:b0:86:48: ... odstranjeno zaradi preglednosti .... c4:8a:b6:41:83:41:e7:cd:57:65:da:c6:66:5f:a7:b7:b9:a7: 83:fb:61:38--- /IZPIS ---

Sedaj imamo mars-server.crt, ki ga kopiramo v ssl.crt, mars-server.key, ki ga skopiramo v ssl.key in my-ca.crt, ki ga skopiramo v ssl.crt.

Oto Brglez! Varne spletne storitve

10

Page 12: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Priprava SSL/TLS klientovega certifikata za avtentifikacijoZ uporabo openssl orodij generiramo 1024 bitni RSA PEM ključ, ki ga bodo na koncu postopka lahko končni uporabniki kot PKCS#12 certifikat namestili na svoje sisteme in brskalnike

Generiranje ključa# openssl genrsa -des3 -out oto-brglez.key 1024

Generiranje certifikata - zahteve za certifikat# openssl req -new -key oto-brglez.key -out oto-brglez.csr

Potrditev ključa s strani moje CA za naslednjih 10 let# openssl x509 -req -in oto-brglez.csr -out oto-brglez.crt -sha1 -CA oto-brglez.crt -CAkey oto-brglez.key -CAcreateserial -days 3650

Izvoz PEM kodiranega certifikata v ASCII obliki v PKCS#12 # openssl pkcs12 -export -in oto-brglez.crt -inkey oto-brglez.key -name "Oto Brglez Certifikat" -out oto-brglez.p12

Ogled generiranega certifikata (zahteva geslo, ki se uporablja za uvoz)# openssl pkcs12 -in oto-brglez.p12 -clcerts -nokeys -info

Bag Attributes localKeyID: D6 76 70 1B DA 46 13 23 53 F8 CC 25 96 50 23 AC 30 1F 66 B1 friendlyName: Oto Brglez - MeSecure Certifikatsubject=/C=SL/ST=Some-State/L=Maribor/O=MeSecure Klient/OU=Oto Brglez/CN=Oto Brglez/[email protected]=/C=US/ST=Some-State/L=Maribor/O=MeSecure/OU=Certificate Authority/CN=MeSecure CA/[email protected] CERTIFICATE-----MIIDPTCCAiUCCQDP0ebthXqKcjANBgkqhkiG9w0BAQUFADCBpTELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxEDAOBgNVBAcTB01hcmlib3IxETAPBgNVBAoTCE1lU2VjdXJlMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFDASBgNVBAMTC01lU2VjdXJlIENBMSYwJAYJKoZIhvcNAQkBFhdob3N0bWFzdGVyQG1lc2VjdXJlLmNvbTAeFw0xMTA2MDIwMzUyMThaFw0yMTA1MzAwMzUyMThaMIGeMQswCQYDVQQGEwJTTDETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEBxMHTWFyaWJvcjEYMBYGA1UEChMPTWVTZWN1cmUgS2xpZW50MRMwEQYDVQQLEwpPdG8gQnJnbGV6MRMwEQYDVQQDEwpPdG8gQnJnbGV6MSQwIgYJKoZIhvcNAQkBFhVvdG8uYnJnbGV6QG9wYWxhYi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALu3rDqZq193KAFFI94yA1Y/RMyOQFR7wV/PeIsh+rsa35F/1MhyqSf3RQrXFY5av6RRWTrYeIgMk1HJVValZW1mFgYiwcl7IVXgqXKGac/tO6aOkkjZSrLIRk08twOmIcqx1v+Ztkm9Me8KNyga53t4OUM98EyEZ0K+MW5VynqhAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAF4iNI4Emof8kcNdlm9BqaHeJ7kVRrMb9vBJ3ALH3k50uuJqE1hgPn/wJFsmu5R3nnbmWIjF/T+UDuXBzbRyeTlUlw5dfgsKv8ksu0Fs4e+0gdBcv5E3W5M3BYxYDfxj8Hknnb04Ll6W+TCL/rZ54VYdK8TojSftlTYUe/lbodS44vBh9QBGMZq55bo3Ucxf1b3efUHNgiAxSfLS/p8z8UOQVJxErpPgtLphuWNfWzpAhsAdGLLVfqGrCM7lFuGu9Vcn/lN68LKE2ZxLuuRMOIIQbU6e5D3PH5I15c0kgtl51kXXvlJFukW0ocyMTD/YrktNPC8NXu4peTtXPfZKGPg=-----END CERTIFICATE-----

Generiran certifikat lahko končni uporabniki namestijo v svoje brskalnike.

Oto Brglez! Varne spletne storitve

11

Page 13: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

Konfiguracija spletnega strežnika ApacheUporabimo spletni strežnik apache z vključenim mod_ssl. Moja konfiguracija je pripravljena kot “virtualhost” in deluje samo za domeno “mesecure.banka.si”.

<VirtualHost *:80>! ServerAdmin [email protected]! ServerName mesecure.banka.si! ServerAlias mesecure.banka.si

! DocumentRoot /home/notroot/rails-projects/mesecure/! <Directory /home/notroot/rails-projects/mesecure>! ! Options FollowSymLinks Indexes MultiViews ExecCGI! ! AllowOverride All! ! Order allow,deny! ! allow from all! </Directory>

! LogLevel info! ErrorLog /.. pot ../apache_error.log! CustomLog /.. pot ../apache_access.log combined</VirtualHost>

<IfModule mod_ssl.c>! AddType application/x-x509-ca-cert .crt! AddType application/x-pkcs7-crl .crl! SSLPassPhraseDialog builtin

! <VirtualHost _default_:443>! ! ServerName mesecure.banka.si:443!! ! DocumentRoot /home/notroot/rails-projects/mesecure/! ! <Directory /home/notroot/rails-projects/mesecure>! ! ! Options FollowSymLinks Indexes MultiViews ExecCGI! ! ! AllowOverride All! ! ! Order allow,deny! ! ! allow from all! ! </Directory>

! ! LogLevel info! ! ErrorLog /.. pot ../ssl_apache_error.log! ! CustomLog /.. pot ../ssl_apache_access.log combined

! ! SSLEngine on! ! SSLCipherSuite HIGH:MEDIUM! ! SSLProtocol all -SSLv2! ! SSLOptions +StdEnvVars +ExportCertData

! ! # Strežniški certifiakt:! ! SSLCertificateFile /.. pot ../ssl_workspace/mars-server.crt

! ! # Strežnikov zasebni ključ:! ! SSLCertificateKeyFile /.. pot ../ssl_workspace/mars-server.key

! ! # Strežniška certifiaktska veriga:! ! SSLCertificateChainFile /.. pot ../ssl_workspace/my-ca.crt

! ! # Certificate Authority (CA):! ! SSLCACertificateFile /.. pot ../ssl_workspace/my-ca.crt!! ! <Location /secure>! ! ! SSLVerifyClient require! ! ! SSLVerifyDepth 1! ! </Location>! </VirtualHost></IfModule>

Oto Brglez! Varne spletne storitve

12

Page 14: Varne spletne storitve z uporabo x.509 certifikatov in SSL/TLS povezave

ZaključekSeminarske naloge sem se lotil, ker me je vedno zanimalo kako zahtevno je pravilno izdelati ključe in kako jih lahko uporabimo za “single sing on” prijavo. Implementacija je zelo zanimiva in menim, da obstaja veliko projektov, kjer bi lahko takšen način varovanja bil velika prednost.

V razmislek bi bilo zanimivo preučiti tudi konfiguracijo X.509 certifikatov v Microsoftovem okolju.

Viri• Secure Socket Layer - http://en.wikipedia.org/wiki/Secure_Sockets_Layer• The SSL Protocol : Version 3.0 - http://www.mozilla.org/projects/security/pki/nss/ssl/

draft302.txt• Message authentication code - http://en.wikipedia.org/wiki/

Message_authentication_code• Encryption - http://en.wikipedia.org/wiki/Encryption• OWASP: Transport Layer Protection Cheat Sheet - https://www.owasp.org/index.php?

title=Transport_Layer_Protection_Cheat_Sheet• X.509 - http://en.wikipedia.org/wiki/X.509• Mozilla: Included Certificate List - http://www.mozilla.org/projects/security/certs/included/• PHP: openssl_x509_parse - Manual - http://php.net/manual/en/function.openssl-x509-

parse.php• Content of an X.509 Certificate - http://www.omii.ac.uk/docs/3.4.0/installation_guide/

security/x509_certification/what_is_cert_auth.htm• Mac 101: Keychain - http://www.tuaw.com/2007/09/17/mac-101-keychain/• RSA Laboratories - Public-Key Cryptography Standards (PKCS) - http://www.rsa.com/

rsalabs/node.asp?id=2124

Oto Brglez! Varne spletne storitve

13