Apache-alap� WebDAV szerver, LDAP �s SSL szolg�ltat�sokkal

Saqib Ali


            saqib@seagate.com
  Offshore XML/XHTML Development
         

Verzi�t�rt�net
Verzi�: v4.1.22003.10.17�tdolgozta: sa
Hozz�adva az SSL teljes�tm�nybe�ll�t�si fejezet
Verzi�: v4.1.12003.09.29�tdolgozta: sa
Friss�t�sek az SSL r�szben, az olvas�i visszajelz�sekre alapozva.
Verzi�: v4.1.02003.09.02�tdolgozta: sa
Friss�t�sek az SSL r�szben, az olvas�i visszajelz�sekre alapozva.
Verzi�: v4.0.22003.08.01�tdolgozta: sa
Kisebb friss�t�sek az Apache-ot be�ll�t� parancssorban. /dev/random hivatkoz�s az SSL r�szben.
Verzi�: v4.0.12003.07.27�tdolgozta: sa
Az SSL fejezet tov�bbi inform�ci�val b�v�tve.
Verzi�: v4.02002.06.29�tdolgozta: sa
Friss�tve a HOGYAN Apache 2.0.-ra. A doksi forr�sk�dja XML form�tum�.
Verzi�: v3.42002.06.29�tdolgozta: sa
Hozz�adva a "Hogyan gener�ljunk CSR-t" fejezet.
Verzi�: v3.32002.04.14�tdolgozta: sa
Hozz�adva a "WebDAV szerver �zemeltet�se" fejezet.

Tartalomjegyz�k
1. Bevezet�s
1.1. Err�l a dokumentumr�l
1.2. K�zrem�k�d�k
1.3. Mi az Apache?
1.4. Mi a WebDAV?
1.5. Mi a PHP?
1.6. Mi a MySQL?
1.7. Mire van sz�ks�g�nk?
1.8. Felt�telez�sek
1.9. Magyar ford�t�s
2. K�vetelm�nyek
2.1. Alapok
2.2. Apache 2.0.46
2.3. OpenSSL
2.4. iPlanet LDAP programk�nyvt�r
2.5. mod_auth_ldap
2.6. MySQL adatb�zismotor
2.7. PHP
3. Telep�t�s
3.1. Telep�t�si felt�telek
3.2. MySQL
3.3. Apache 2.0
3.4. mod_auth_ldap
3.5. Tan�s�tv�ny adatb�zis az LDAPS:// r�sz�re
3.6. PHP
4. A WebDAV szolg�ltat�sok telep�t�se �s be�ll�t�sa
4.1. M�dos�t�sok az /usr/local/apache/conf/httpd.conf f�jlban
4.2. Egy DAVLockDB k�nyvt�r l�trehoz�sa
4.3. A DAV enged�lyez�se
4.4. Egy "DAVtest" nev� k�nyvt�r l�trehoz�sa
4.5. Az Apache �jraind�t�sa
4.6. A WebDAV protokoll tesztel�se
5. A WebDAV szerver �zemeltet�se
5.1. A DAV megosztott hozz�f�r�s�nek korl�toz�sa
5.2. �r�s jog korl�toz�sa DAV megoszt�s alatt
6. Az SSL megval�s�t�sa �s haszn�lata a HTTP forgalom biztons�goss� t�tel�re
6.1. Az SSL bemutat�sa
6.2. Teszt tan�s�tv�nyok
6.3. Tan�s�tv�nyok "�zemi" haszn�latra
6.4. Hogyan gener�lhatsz a CSR-t?
6.5. A szerver titkos kulcs�nak �s tan�s�tv�ny�nak telep�t�se
6.6. A jelmondat (passphrase) elt�vol�t�sa az RSA titkos kulcsb�l
6.7. SSL teljes�tm�nybe�ll�t�s
A. HTTP/HTTPS teljes�tm�nybe�ll�t� programok
B. Hardveres SSL titkos�t�si megold�sok
C. Megb�zott tan�s�tv�ny hat�s�gok (Trusted Certificate Authorities)
A nyilv�nos kulcs� titkos�t�ssal kapcsolatos szavak gy�jtem�nye

1. Bevezet�s

Jelen dokumentum c�lja, hogy fel�p�ts�nk egy Apache + MySQL + PHP + WebDAV -alap� webes alkalmaz�sszervert, amely LDAP szerverek haszn�lat�val v�gzi az azonos�t�st (authentication). A dokumentum felfedi a titkos�tott LDAP tranzakci�kezel�s egyes r�szleteit is.

Megjegyz�sMegjegyz�s:
 

Ha b�rmilyen probl�m�val tal�lkozol az Apache vagy valamely modul telep�t�s�n�l, l�pj kapcsolatba velem a e-mail c�men.


1.2. K�zrem�k�d�k

Ha szeretn�l k�zrem�k�dni a HOGYAN karbantart�s�ban, let�ltheted az XML k�dot a http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml webhelyr�l, �s elk�ldheted a friss�tett k�dot a saqib@seagate.com e-mail c�mre A SZERZ�K LIST�J�BAN �S A V�LTOZ�SOK T�RT�NET�BEN A TE NEVEDDEL :). Ez megk�nny�ti sz�momra a kapcsolatfelv�telt mindazokkal akik friss�tett�k/jav�tott�k a dokumentumot. K�sz�n�m.


1.9. Magyar ford�t�s

A magyar ford�t�st Kili�n Magdolna k�sz�tette (2003.03.28). A lektor�l�st Szijj�rt� L�szl� v�gezte el (2003.07.09). Utolj�ra Daczi (dacas) L�szl� friss�tette (2003.12.10). A dokumentum legfrissebb v�ltozata megtal�lhat� a Magyar Linux Dokument�ci�s Projekt honlapj�n.


2. K�vetelm�nyek

Le kell t�ltened �s ford�tanod (compile) n�h�ny csomagot. Ez a HOGYAN elmagyar�zza a ford�t�si folyamatot, de tudnod kell forr�sk�db�l telep�teni.


2.3. OpenSSL

T�ltsd le az OpenSSL csomagot a http://www.openssl.org/source/ webhelyr�l. A legutols� verzi�t t�ltsd le. Az OpenSSL telep�t�st az SSL k�nyvt�rak mod_ssl ford�t�s�ra haszn�ljuk Apache-csal, valamint SSL bizony�tv�nyok karbantart�s�ra a webszerveren. T�ltsd le az OpenSSL forr�sk�dot gzippelt f�jlk�nt a /tmp/downloads k�nyvt�rba.


2.4. iPlanet LDAP programk�nyvt�r

T�ltsd le az iPlanet LDAP SDK csomagot a http://wwws.sun.com/software/download/products/3ec28dbd.html honlapr�l. Az iPlanet LDAP SDK csomagot fogjuk haszn�lni, mert ez tartalmazza az ldaps-hoz sz�ks�ges programk�nyvt�rakat (LDAP az SSL felett).


3. Telep�t�s

El�sz�r ellen�rizd le n�h�ny telep�t�si felt�tel megl�t�t, majd kezdd meg a telep�t�st.


3.1. Telep�t�si felt�telek

Az alkalmaz�sszerver terv�nk szerinti telep�t�s�hez sz�ks�gesek az SSL �s LDAP programk�nyvt�rak. Az SSL motorra is sz�ks�ge van az Apach 2.x-nek, az SSL tan�s�tv�nyok kezel�s�hez/haszn�lat�hoz.


3.2. MySQL

A MySQL telep�t�se el�g egyszer�. A let�lt�tt futtathat� �llom�nyokat a megfelel� k�nyvt�rba kell tenni.

Kezdetk�nt hozz l�tre egy user:group csoportot a MySQL d�mon sz�m�ra, majd m�sold be a f�jlokat a megfelel� k�nyvt�rakba.

 # groupadd MySQL
# useradd -g MySQL MySQL
# cd /usr/local
# gunzip < /path/to/MySQL-VERSION-OS.tar.gz | tar xvf - 
# ln -s full-path-to-MySQL-VERSION-OS MySQL

Ezut�n futtasd az install_db szkriptet, �s �ll�tsd be a f�jlok jogosults�gait.

 # cd MySQL
# scripts/MySQL_install_db
# chown -R MySQL .

3.2.1. A MySQL ind�t�sa

Most ind�tsd el a MySQL kiszolg�l�t a telep�t�s ellen�rz�s�hez.

 # bin/MySQLd_safe --user=MySQL &

Ellen�rizd a MySQL d�mon fut�s�t, a ps -ef parancs haszn�lat�val. A k�vetkez� kimenetnek kell megjelennie:

# ps -ef | grep MySQL
root      3237     1  0 May29 ?        00:00:00 /bin/sh bin/safe_MySQLd
MySQL     3256  3237  0 May29 ?        00:06:58 /usr/local/MySQL/bin/MySQLd --defaults-extra-file=/usr/local/MySQL/data/my.cnf --basedir=/usr/local/MySQL --datadir=/usr/local/MySQL/data --user=MySQL --pid-file=/usr/local/MySQL/data/downloa

3.3. Apache 2.0

Kezdetnek �ll�ts be n�h�ny FLAGS-et a ford�t� sz�m�ra.

# export LDFLAGS="-L/usr/local/iplanet-ldap-sdk.5/lib/ -R/usr/local/iplanet-ldap-sdk.5/lib/:/usr/local/lib"
# export CPPFLAGS="-I/usr/local/iplanet-ldap-sdk.5/include"

Ezut�n csomagold ki az Apache 2.0 forr�sf�jljait, �s futtasd a configure szkriptet.

# cd /tmp/download
# gzip -d httpd-2.0.46.tar.gz 
# tar -xvf httpd-2.0.46.tar
# cd httpd-2.0.46
#./configure --enable-so --with-ssl --enable-ssl --enable-rewrite --enable-dav

Ezut�n add ki a make parancsot

# make
# make install

3.3.1. Az Apache ind�t�sa

# /usr/local/apache2/bin/apachectl start

3.3.2. Az Apache le�ll�t�sa

# /usr/local/apache2/bin/apachectl stop

3.4. mod_auth_ldap

Csomagold ki a modauthldap_apache2.tar.gz f�jlt.

cd /tmp/download
# gzip -d modauthldap_apache2.tar.gz
# tar -xvf modauthldap_apache2.tar
# cd modauthldap_apache2

Most �ll�tsd be �s telep�tsd a mod_auth_ldap csomagot.

# ./configure --with-apxs=/usr/local/apache2/bin/apxs  --with-ldap-dir=/usr/local/iplanet-ldap-sdk.5/
# make
# make install

3.6. PHP

Csomagold ki a PHP forr�sf�jlokat.

gzip -d php-xxx.tar.gz
tar -xvf php-xxx.tar

�ll�tsd be, majd futtasd a make parancsot.

cd php-xxx
./configure --with-MySQL --with-apxs=/usr/local/apache2/bin/apxs

Ford�tsd le a forr�sk�dot.

# make 
# make install

M�sold a php.ini f�jlt a megfelel� k�nyvt�rba.

cp php.ini-dist /usr/local/lib/php.ini

4. A WebDAV szolg�ltat�sok telep�t�se �s be�ll�t�sa

Ez egy k�nny� r�sz. Ebben a fejezetben enged�lyezni fogjuk a WebDAV szolg�ltat�st az Apache egy f�k�nyvt�r�ban.


4.3. A DAV enged�lyez�se

A DAV enged�lyez�se pofonegyszer�. Az Apache f�k�nyvt�ra alatti k�nyvt�r DAV enged�lyez�s�hez, add hozz� annak a bizonyos k�nyvt�rnak a t�rol�j�hoz a k�vetkez� direkt�v�t:

  DAV On

Ez enged�lyezi a DAV-ot arra a k�nyvt�rra �s alk�nyvt�raira.

A k�vetkez� p�lda be�ll�t�s enged�lyezi a DAV �s LDAP azonos�t�st/hiteles�t�st az /usr/local/apache/htdocs/DAVtest k�nyvt�rra. Rakd be az /usr/local/apache/conf/httpd.conf f�jlba.

 DavLockDB /tmp/DavLock
<Directory "/usr/local/apache2/htdocs/DAVtest">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "SMA Development server"
AuthType Basic
LDAP_Debug On
#LDAP_Protocol_Version 3
#LDAP_Deref NEVER
#LDAP_StartTLS On
LDAP_Server you.ldap.server.com 
#LDAP_Port 389
# Ha az SSL akt�v, meg kell adnod az LDAP SSL portot, ez �ltal�ban 636
LDAP_Port 636
LDAP_CertDbDir /usr/local/apache2/sslcert
Base_DN "o=SDS"
UID_Attr uid
DAV On
#require valid-user
require valid-user
#require roomnumber "123 Center Building"
#require filter "(&(telephonenumber=1234)(roomnumber=123))"
#require group cn=rcs,ou=Groups
</Directory>

4.5. Az Apache �jraind�t�sa

V�g�l le kell futtatnod az Apache-hoz mell�kelt konfigur�ci�s tesztrutint, a httpd.conf f�jl szintaxis�nak ellen�rz�s�hez:

# /usr/local/apache/bin/apachectl configtest

Ha hiba�zenetet kapsz, akkor ellen�rizd le, hogy minden utas�t�st helyesen k�vett�l-e. Ha nem tudod kital�lni a hiba ok�t, �rj nekem (a hiba�zenetet is �rd meg) a saqib@seagate.com e-mail c�mre.

Ha a konfigur�ci� tesztje sikeres, ind�tsd el az Apache webszervert:

# /usr/local/apache/bin/apachectl restart

Most van egy WebDAV enged�lyezett Apache szervered LDAP hiteles�t�ssel �s SSL titkos�t�ssal.


4.6. A WebDAV protokoll tesztel�se

Nagyon fontos, hogy a most telep�tett WebDAV teljesen �sszhangban legyen a WebDAV-2 protokollal. Ha nem teljesen kompatibilis, akkor a WebDAV alkalmaz�sok kliens oldala nem fog rendesen m�k�dni.

A kompatibilit�s tesztel�s�hez a Litmus nev� eszk�zt haszn�ljuk. A Litmus a WebDAV protokoll tesztel�je, amely azt vizsg�lja, hogy �sszhangban van-e egy szerver az RFC2518-ben le�rt WebDAV protokollal.

T�ltsd le a Litmus forr�sk�dj�t a http://www.webdav.org/neon/litmus/ webhelyr�l, majd m�sold be a /tmp/downloads k�nyvt�rba.

Haszn�ld a gzip �s tar programokat a kicsomagol�shoz:

# cd /tmp/downloads
# gzip -d litmus-0.6.x.tar.gz
# tar -xvf litmus-0.6.x.tar
# cd litmus-0.6.x

A Litmus ford�t�sa �s telep�t�se egyszer�:

# ./configure
# make
# make install

A make install parancs a bin�ris f�jlokat az /usr/local/bin, a s�g� f�jljait pedig az /usr/local/man k�nyvt�rba teszi.

A most telep�tett WebDAV szerver tesztel�s�hez haszn�ld a

# /usr/local/bin/litmus http://you.dav.server/DAVtest userid passwd

parancsot.


5. A WebDAV szerver �zemeltet�se

Ebben a r�szben megvitatjuk a k�l�nb�z� kezel�si feladatokat - p�ld�ul LDAP bel�p�s ellen�rz�se, �s hogyan dolgozunk Apache-on DAV m�dszerrel.

A legt�bb konfigur�ci�s v�ltoz�st a DAV-hoz a httpd.conf f�jl haszn�lat�val tessz�k. Ez a f�jl az /usr/local/apache/conf/httpd.conf k�nyvt�rban tal�lhat�.

A httpd.conf egy sz�veges konfigur�ci�s f�jl, amelyet az Apache haszn�l. Szerkeszt�s�hez b�rmely sz�vegszerkeszt�t haszn�lhatsz, �n legink�bb a vi-t szoktam. K�sz�ts egy m�solatot err�l a f�jlr�l, miel�tt megv�ltoztatod.

Miut�n a httpd.conf f�jlban elv�gezted a v�ltoztat�sokat, az Apache szervert �jra kell ind�tanod az /usr/local/apache/bin/apachectl restart paranccsal. Miel�tt �jraind�tan�d, teszteld a httpd.conf �rv�nyess�g�t az /usr/local/apache/bin/apachectl configtest paranccsal.


5.1. A DAV megosztott hozz�f�r�s�nek korl�toz�sa

Az el�z� r�szben, amikor l�trehoztuk a DAVtest megoszt�st, az LDAP-ot hiteles�t�si c�lb�l haszn�ltuk. Azonban b�rki, aki hiteles�ti mag�t, az LDAP- ot haszn�lva a felhaszn�l�i azonos�t�j�val/jelszav�val, hozz�f�rhet ahhoz a mapp�hoz.

A require direkt�va haszn�lat�val a httpd.conf f�jlban limit�lhatod adott egy�nek vagy csoportok hozz�f�r�s�t.

Ha megn�zed a DAVtest konfigur�ci�t az el�z� r�szb�l :
  <Directory /usr/local/apache/htdocs/DAVtest>
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require valid-user
  </Limit>
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  </Directory>
L�thatod, hogy a require direkt�va �rt�ke valid-user. Ami azt jelenti, hogy b�rmely hiteles�tett felhaszn�l�nak hozz�f�r�se van ahhoz a mapp�hoz.


6. Az SSL megval�s�t�sa �s haszn�lata a HTTP forgalom biztons�goss� t�tel�re

Manaps�g a f�jlszerveren t�rolt adatok biztons�ga nagyon fontos. A kompromitt�lt adatok t�bb ezer doll�rba is ker�lhetnek egy t�rsas�gnak. Az utols� r�szben LDAP hiteles�t�si modult ford�tottunk az Apache-ba, hogy biztos�tsuk a hiteles�t�si mechanizmust. B�r a HTTP forgalom nem igaz�n biztons�gos, �s minden adat tiszta sz�vegk�nt jelenik meg - ez azt jelenti, hogy az LDAP hiteles�t�s (userid/passwd) ugyancsak tiszta sz�vegk�nt megy �t. Ez probl�m�t okozhat. B�rki kutathat ezen userid/passwd p�rosok ut�n �s hozz�f�rhet a DAV �llom�nyhoz. Ennek megel�z�s�hez titkos�tanunk kell a HTTP forgalmat, val�j�ban a HTTP+SSL vagy HTTPS seg�ts�g�vel. B�rmi, ami �tmegy a HTTPS-en, titkos�tott lesz, �gy az LDAP userid/passwd-ben nem kutakodhatnak. A HTTPS a 443-as porton fut. Az el�z� r�sz ford�t�si folyamat�nak eredm�nyek�nt az Apache mindk�t porton, a 80-ason (norm�l HTTP) �s 443-ason (HTTPS) is fut. Ha csak a DAV-hoz haszn�lod majd a szervert, akkor nagyon aj�nlott bez�rni a 80-as portot. A HOGYAN ezen r�sz�ben n�h�ny inform�ci�t ny�jtok az SSL-r�l �s annak �zemeltet�s�r�l egy Apache HTTP szerveren.


6.1. Az SSL bemutat�sa

Az SSL (Secure Socket Layer; Biztons�gi Alr�teg) egy protokoll r�teg, amely a h�l�zati (Network layer) �s az alkalmaz�si r�tegek (Application layer) k�z�tt van. Mint neve is sugallja, az SSL mindenf�le forgalom titkos�t�s�ra haszn�lhat� - LDAP, POP, IMAP �s legf�k�pp HTTP.

�me egy v�gletekig leegyszer�s�tett �bra az SSL-el kapcsolatban �ll� r�tegekr�l.
	+-------------------------------------------+
	|   LDAP   |    HTTP    |   POP   |   IMAP  |
	+-------------------------------------------+
	|                   SSL                     |
	+-------------------------------------------+
	|      H�l�zati r�teg (Network Layer)       |
	+-------------------------------------------+
	


6.1.1. Az SSL-ben haszn�lt titkos�t� algoritmusok

H�romf�le titkos�t�si technol�gi�t haszn�lnak az SSL-ben: "nyilv�nos-titkos kulcs" (Public-Private Key), "szimmetrikus kulcs" (Symmetric Key), �s "digit�lis al��r�s" (Digital Signature).

"Nyilv�nos-titkos kulcs" titkos�t�s - SSL kapcsolat ind�t�sa: Ebben az algoritmusban a titkos�t�s �s a visszafejt�s nyilv�nos-titkos kulcsp�rral t�rt�nik. A webszerver� a titkos kulcs, a nyilv�nos kulcsot pedig a tan�s�tv�nyban k�ldi el a kliensnek.

  1. A kliens k�ri a HTTPS-t haszn�l� Web szervert�l a tartalmat.

  2. A web szerver v�laszol egy Digit�lis Tan�s�tv�nnyal (Digital Certificate), amiben benne van a szerver nyilv�nos kulcsa.

  3. A kliens ellen�rzi, hogy lej�rt-e a tan�s�tv�ny.

  4. Ezut�n a kliens ellen�rzi, hogy a tan�s�tv�ny hat�s�g (Certificate Authority; tov�bbiakban CA), amely al��rta a tan�s�tv�nyt, megb�zott hat�s�g-e a b�ng�sz� list�j�n. Ez a magyar�zata annak, mi�rt van sz�ks�g�nk egy megb�zott CA-t�l kapott tan�s�tv�nyra.

  5. A kliens ellen�rzi, hogy a webszerver teljes domain neve (Fully Qualified Domain Name) megegyezik-e a tan�s�tv�nyon l�v� k�z�ns�ges n�vvel (Common Name).

  6. Ha minden megfelel�, l�trej�n az SSL kapcsolat.

Megjegyz�sMegjegyz�s:
 

B�rmi, amit titkos kulccsal titkos�tottak, kiz�r�lag a nyilv�nos kulccsal fejthet� vissza. Ennek megfelel�en, b�rmilyen nyilv�nos kulccsal titkos�tott dolog, kiz�r�lag a titkos kulccsal fejthet� vissza. Elterjedt az a t�vhit, miszerint kiz�r�lag nyilv�nos kulccsal lehet titkos�tani �s titkos kulccsal visszafejteni. Ez nem �gy van. B�rmelyik kulcs haszn�lhat� titkos�t�sra �s visszafejt�sre egyar�nt (ha annak p�rj�t haszn�lj�k visszafejt�sre �s titkos�t�sra - dacas). V�g�l is, ha az egyik kulcsot haszn�lt�k titkos�t�sra, a m�sikat kell haszn�lni a visszafejt�sre stb. Egy �zenet nem titkos�that� �s visszafejthet� kiz�r�lag a nyilv�nos kulcs haszn�lat�val.

A titkos kulccsal t�rt�n� titkos�t�s �s a nyilv�nos kulccsal t�rt�n� visszafejt�s biztos�t�k a c�mzetteknek arr�l, hogy a k�ldem�nyt a k�ld� (a titkos kulcs tulajdonosa) adta fel (mivel a titkos kulcs haszn�lat�hoz sz�ks�ges jelmondatot csak � ismeri - dacas). A nyilv�nos kulccsal t�rt�n� titkos�t�s �s titkos kulccsal visszafejt�s biztos�tja azt, hogy a k�ldem�nyt csak a meghat�rozott c�mzett (a titkos kulcs tulajdonosa) k�pes visszafejteni.

Szimmetrikus titkos�t�s - az adatok tulajdonk�ppeni �tvitele: Miut�n az SSL kapcsolat l�trej�tt, szimmetrikus titkos�t�st haszn�l az adatok titkos�t�s�ra, kevesebb CPU ciklust felhaszn�lva (teh�t kev�sb� er�forr�sig�nyes - a lektor). Szimmetrikus titkos�t�skor az adat ugyanazzal a kulccsal titkos�that� �s visszafejthet�. A szimmetrikus titkos�t�s kulcsa a kapcsolat ind�t�sakor ker�l �tad�sra, a nyilv�nos-titkos kulcsp�rral t�rt�n� titkos�t�s alatt.

�zenet ellen�rz�s A szerver kivonatot k�sz�t az �zenetr�l valamilyen algoritmus szerint, mint p�ld�ul HMAC, SHA, MD5, majd ezek alapj�n ellen�rzi az adatok s�rtetlens�g�t.


6.1.2. A hiteless�g �s s�rtetlens�g ellen�rz�se

Titkos�t�si folyamat

             Felad�                  C�mzett
          titkos kulcsa          nyilv�nos kulcsa
          ,-.                     ,-.
         (   )..........         (   )..........
          `-' ''''|'|'||          `-' ''''''''||
                  | |                    |
                  | |                    |
   .-----------.  | |    .-----------.   |     .-----------.
   |           |  V |    |Titkos�tott|   V     |Titkos�tott|
   |Sima sz�veg|-------->|  sz�veg   |-------->|  sz�veg   |
   |           |1. l�p�s |    1      |2. l�p�s |    2      |\
   `-----------'    |    `-----------'          `----------' \    __
         |          |                                         \   [_'
         |          |                                  5. l�p�s\   |
         |3. l�p�s  |                                       __   --|--
         |          |                                  _.--'       |
         V          |                            _..-''           / \
    .----------.    |                      _..-''               C�mzett
    |  SHA 1   |    V    .---------._..-''
    | �zenet   |-------->|Digit�lis|
    | kivonat  | 4. l�p�s| al��r�s |             _
    `----------'         `---------'         _  (_)
        _____ ____   ____  ____ _   _ ____ _| |_ _  ___  ____
       | ___ |  _ \ / ___)/ ___) | | |  _ (_   _) |/ _ \|  _ \
       | ____| | | ( (___| |   | |_| | |_| || |_| | |_| | | | |
       |_____)_| |_|\____)_|    \__  |  __/  \__)_|\___/|_| |_|
                               (____/|_|
	

Visszafejt�si folyamat

           C�mzett                   Felad�
        titkos kulcsa            nyilv�nos kulcsa
         ,-.                     ,-.
        (   )..........         (   )..........
         `-' ''''''''||          `-' '''''''|||
                |                      |    |
                |                      |    |
  .-----------. |      .-----------.   |    | .-----------.        .----#1----.
  |Titkos�tott| V      |Titkos�tott|   V    | |           |        |  SHA 1   |
  |  sz�veg   |------->|  sz�veg   |--------->|Sima sz�veg|------->| �zenet   |
  |    2      |1. l�p�s|     1     |2. l�p�s| |           |3. l�p�s|  kivonat |
  `-----------'        `-----------'        | `-----------'        `----------'
                                            |                        ||
                                            |                        ||5. l�p�s
                                            |                        ||
                                            |                        ||
                               .---------.  |                    .----------.
                               |Digit�lis|  V                    |  SHA 1   |
                               | al��r�s |---------------------->| �zenet   |
                 _             `---------'  4. l�p�s  _          | kivonat  |
                | |                               _  (_)         `----#2----'
              __| |_____  ____  ____ _   _ ____ _| |_ _  ___  ____
             / _  | ___ |/ ___)/ ___) | | |  _ (_   _) |/ _ \|  _ \
            ( (_| | ____( (___| |   | |_| | |_| || |_| | |_| | | | |
             \____|_____)\____)_|    \__  |  __/  \__)_|\___/|_| |_|
                                    (____/|_|
 


6.4. Hogyan gener�lhatsz a CSR-t?

A CSR (TAK) vagy Certificate Signing Request-et (tan�s�tv�ny al��r�si k�relem) el kell k�ldeni egy megb�zott CA-nak al��r�sra. Ez a r�sz foglalkozik azzal, hogyan gener�lhatsz CSR-t �s k�ldheted el egy �ltalad kiv�lasztott CA-nak. Az # openssl req parancs haszn�lhat� erre, az al�bbiak szerint:

# cd /usr/local/apache/conf/
# /usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr
Generating a 1024 bit RSA private key
............++++++
....++++++
writing new private key to 'private.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:San Jose
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Seagate
Organizational Unit Name (eg, section) []:Global Client Server
Common Name (eg, YOUR name) []:xml.seagate.com
Email Address []:saqib@seagate.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:badpassword
An optional company name []:

Megjegyz�s"PRNG not seeded" �zenet
 

Ha nincs /dev/random k�nyvt�r a rendszer�nk�n, "PRNG not seeded" hiba�zenetet kapsz. Ebben az esetben add ki a k�vetkez� parancsot:

# /usr/local/ssl/bin/openssl req -rand some_file.ext -new -nodes -keyout private.key -out public.csr 

A "some_file.ext" r�szt cser�lj�k ki egy rendszer�nk�n l�tez� f�jl nev�re. B�rmilyen f�jlt megadhatunk. Az Openssl ezt fogja v�letlen sz�m gener�l�shoz haszn�lni.

A Solaris 9 rendszer r�szek�nt adnak /dev/random f�jlt. Amennyiben Solaris rendszert haszn�lsz, elk�pzelhet�, hogy telep�tened kell a 112438 foltot a /dev/random f�jl haszn�lat�hoz.

Ezen a ponton p�r k�rd�st tesz fel a szerver hely�r�l, hogy gener�lhassa a Certificate Signing Request-et.

Megjegyz�s: A k�z�ns�ges neved (Common Name) a teljes DNS neve (Fully Qualified DNS) a webszerverednek, p�ld�ul dav.server.com. Ha m�st �rsz oda, akkor NEM fog m�k�dni. Jegyezd meg a haszn�lt jelsz�t, a j�v�beli haszn�lat �rdek�ben.

Mihelyst befejez�d�tt a folyamat, lesz egy private.key �s egy public.csr f�jlod. Sz�ks�ged lesz a public.csr f�jlt bemutatnunk a CA-nak. Ekkor a public.key f�jl m�g nem titkos�tott. A titkos�t�shoz haszn�ld az

 # mv private.key private.key.unecrpyted
# /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key

parancsokat.


6.5. A szerver titkos kulcs�nak �s tan�s�tv�ny�nak telep�t�se

Miut�n a CA feldolgozta a k�r�sed, visszak�ldenek egy k�dolt tan�s�tv�nyt. A Digit�lis Tan�s�tv�ny form�tum�t az X.509 v3 szabv�ny hat�rozza meg. A k�vetkez�kben l�that� egy tipikus, X509 v3 szabv�ny szerinti Digit�lis Tan�s�tv�ny fel�p�t�se:


6.5.2. Egy Digit�lis Tan�s�tv�ny tartalm�nak megtekint�se

Egy Digit�lis Tan�s�tv�ny tartalma megtekinthet� a # openssl x509 parancs haszn�lat�val, az al�bbiak szerint:

# openssl x509 -text -in server.crt
 Certificate:
     Data:
         Version: 3 (0x2)
         Serial Number: 312312312 (0x0)
         Signature Algorithm: md5WithRSAEncryption
 	Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
         Validity
             Not Before: Feb  8 03:25:50 2000 GMT
             Not After : Feb  8 03:25:50 2001 GMT
 	    Subject: C=US, ST=New York, L=Pelham, O=xml-dev, OU=web, CN=www.xml-dev.com/Email=saqib@xml-dev.com
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
             RSA Public Key: (1024 bit)
                 Modulus (1024 bit):
 		............
 		............
                 Exponent: 65537 (0x10001)
     Signature Algorithm: md5WithRSAEncryption
     	............
 	............

 	

6.5.3. A httpd.conf f�jl m�dos�t�sa a tan�s�tv�nyok telep�t�s�hez

Ezt kell elhelyezned a szerveren, �s be�ll�tanod az Apache-ban ennek hely�t.

P�ld�ul a titkos kulcsot az /usr/local/apache2/conf/ssl.key/ k�nyvt�rba, a tan�s�tv�nyt pedig az /usr/local/apache2/conf/ssl.crt/ k�nyvt�rba.

M�sold le a tan�s�tv�nyt egy server.crt nev� f�jlba, az /usr/local/apache2/conf/ssl.crt/ k�nyvt�rba.

Az el�z� l�p�sben gener�lt private.key f�jlt helyezd az /usr/local/apache2/conf/ssl.key/ k�nyvt�rba

Ezut�n m�dos�tsd az /usr/local/apache2/conf/ssl.conf f�jlt, hogy a megfelel� titkos kulcsra �s tan�s�tv�nyra mutasson:

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/private.key
#SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server-dsa.key

6.6. A jelmondat (passphrase) elt�vol�t�sa az RSA titkos kulcsb�l

A webszerveren t�rolt RSA titkos kulcs �ltal�ban titkos�tott, ez�rt sz�ks�ged van egy jelmondatra a haszn�lat�hoz. Ez�rt k�r jelmondatot, mikor az Apache-ot modssl-el ind�tod:

# apachectl startssl
Apache/1.3.23 mod_ssl/2.8.6 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.
Server your.server.dom:443 (RSA)
Enter pass phrase:

Az RSA titkos kulcs titkos�t�sa nagyon fontos. Ha valaki megkaparintja a "titkos�tatlan RSA titkos kulcsot", akkor k�nnyen eltulajdon�thatja a webszervert. Ha a kulcs titkos�tott, az illet� nem tud semmit tenni a jelmondat n�lk�l, hacsak "nyers er�vel" (brute force) fel nem t�ri. Haszn�lj er�s (�rtsd: hossz� �s �rtelmetlen) jelmondatot erre a c�lra.

A kulcs titkos�t�sa n�ha kellemetlens�g forr�sa is lehet, mivel a webszerver minden ind�t�sakor k�ri a jelmondatot. K�l�n�sen ha rc szkripteket haszn�lunk, a webszerver rendszerind�t�skor t�rt�n� bet�lt�s�hez. A jelmondat bek�r�se probl�m�t okozhat, mivel meg�ll�tja a folyamatot, bemenetre v�r.

K�nnyen megszabadulhatsz a jelmondatt�l, ha visszafejted (decrypt) a kulcsot. Bizonyosodj meg arr�l, hogy senki se szerezheti meg a kulcsot. Vedd figyelembe a biztons�gi �s v�delmi aj�nl�sokat, miel�tt visszafejted a kulcsot a webszerveren.

A kulcs visszafejt�s�nek m�dja:

El�sz�r k�sz�ts m�solatot a titkos�tott kulcsr�l

# cp server.key server.key.cryp

azt�n �rd �jra a kulcsot titkos�t�ssal. K�rni fogja t�led az eredeti titkos�tott kulcs jelmondat�t:

# /usr/local/ssl/bin/openssl rsa -in server.key.cryp -out server.key
read RSA key
Enter PEM pass phrase:
writing RSA key

�me egy m�dja annak, mik�nt biztos�thatod a visszafejtett titkos kulcsot. �gy csak a root felhaszn�l� olvashatja:
# chmod 400 server.key


6.7. SSL teljes�tm�nybe�ll�t�s

6.7.1. Munkafolyamatok k�z�tti SSL r�szfolyamat-gyorst�r (Inter Process SSL Session Cache)

Az Apache t�bbfolyamatos modellt haszn�l, amelyben NEM ugyanaz a munkafolyamat foglalkozik az �sszes k�r�ssel. Ennek eredm�nyek�nt az SSL r�szfolyamat adatai (Session Information) elvesznek, mikor a kliens t�bbsz�r�s k�r�ssel fordul a szerverhez. A t�bbsz�r�s kapcsol�d�s nagy t�bbletterhel�st jelent a webszervernek �s a kliensnek. Ennek elker�l�s�re az SSL r�szfolyamatok adatai egy munkafolyamatok k�z�tti r�szfolyamat-t�rban t�rol�dnak, ez lehet�v� teszi a munkafolyamatok sz�m�ra a kapcsol�d�si adatokhoz val� hozz�f�r�st. Az SSLSessionCache kapcsol� az /usr/local/apache2/conf/ssl.conf f�jlban van, itt hat�rozhatod meg az SSL r�szfolyamat-gyorst�r hely�t:

SSLSessionCache        shmht:logs/ssl_scache(512000)
#SSLSessionCache        shmcb:logs/ssl_scache(512000)
#SSLSessionCache         dbm:logs/ssl_scache
SSLSessionCacheTimeout  300

A dbm haszn�lata: a logs/ssl_scache DBF hash-f�jlt k�sz�t gyorst�rk�nt a helyi lemezeden.

A shmht haszn�lata: a logs/ssl_scache(512000) a gyorst�rat a megosztott mem�ri�ban hozza l�tre.

Megjegyz�sshmht vs shmcb
 

shmht: egy hash t�bl�t haszn�l az SSL kapcsol�d�si adatok gyorst�raz�s�ra a megosztott mem�ri�ban.

shmht: egy ciklikus buffert haszn�l az SSL kapcsol�d�si adatok gyorst�raz�s�ra a megosztott mem�ri�ban.

Megjegyz�sMegjegyz�s:
 

Nem minden platform/oper�ci�s rendszer t�mogatja hash t�bla l�trehoz�s�t a megosztott mem�ri�ban. Ekkor a "dbm:logs/ssl_scache"-t kell haszn�lnod helyette.


6.7.2. Az SSLSession gyorst�r ellen�rz�se

Az SSLSessionCache megfelel� m�k�d�s�nek ellen�rz�s�re az openssl seg�dprogramot haszn�lhatod a -reconnect kapcsol�val, mint azt a k�vetkez�kben l�thatod:

# openssl s_client -connect your.server.dom:443 -state  -reconnect

CONNECTED(00000003)
.......
.......
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....

A -reconnect kapcsol� k�nyszer�ti az "s_client"-et arra, hogy �tsz�r ugyanazzal a SSL munkafolyamat-azonos�t�val (SSL session ID) kapcsol�djon a szerverhez. �tsz�r ugyanannak az SSL munkafolyamat-azonos�t�nak az �jrahaszn�lat�t kell l�tnod, mint a fenti p�ld�ban.


A. HTTP/HTTPS teljes�tm�nybe�ll�t� programok

�me egy lista, a Web szerverekhez haszn�lhat�, ny�lt forr�s� teljes�tm�nybe�ll�t� programokr�l:

  1. SSLswamp - egy SSL-t haszn�l� szerverhez csatlakozni k�pes terhelhet�s�gi teszt/teljes�tm�nym�r� program

  2. HTTPERF - Egy eszk�z a Web szerver teljes�tm�ny�nek bem�r�s�hez

  3. ab - Apache HTTP szerver teljes�tm�nybe�ll�t� program


B. Hardveres SSL titkos�t�si megold�sok

A k�vetkez� hardveres SSL titkos�t�si megold�sok �rhet�k el:

  1. CHIL (Cryptographic Hardware Interface Library; titkos�t� hardverek csatol�fel�leteinek programk�nyvt�ra) az nCipher-t�l

  2. ab - Apache HTTP szerver teljes�tm�nybe�ll�t� program


C. Megb�zott tan�s�tv�ny hat�s�gok (Trusted Certificate Authorities)

�me a tan�s�tv�ny hat�s�gok (Certificate Authorities) list�ja, amelyeket a k�l�nb�z� b�ng�sz�k megb�zhat�nak min�s�tenek:

  1. Baltimore

  2. Entrust

  3. GeoTrust

  4. Thawte

  5. TrustCenter

A nyilv�nos kulcs� titkos�t�ssal kapcsolatos szavak gy�jtem�nye