Apache-alapú WebDAV szerver, LDAP és SSL szolgáltatásokkalSaqib Ali
saqib@seagate.com
Offshore XML/XHTML Development
Verziótörténet
Verzió: v4.1.2 2003.10.17 Átdolgozta: sa
Hozzáadva az SSL teljesítménybeállítási fejezet
Verzió: v4.1.1 2003.09.29 Átdolgozta: sa
Frissítések az SSL részben, az olvasói visszajelzésekre alapozva.
Verzió: v4.1.0 2003.09.02 Átdolgozta: sa
Frissítések az SSL részben, az olvasói visszajelzésekre alapozva.
Verzió: v4.0.2 2003.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.1 2003.07.27 Átdolgozta: sa
Az SSL fejezet további információval bővítve.
Verzió: v4.0 2002.06.29 Átdolgozta: sa
Frissítve a HOGYAN Apache 2.0.-ra. A doksi forráskódja XML formátumú.
Verzió: v3.4 2002.06.29 Átdolgozta: sa
Hozzáadva a "Hogyan generáljunk CSR-t" fejezet.
Verzió: v3.3 2002.04.14 Átdolgozta: sa
Hozzáadva a "WebDAV szerver üzemeltetése" fejezet.
Ez a HOGYAN egy Apache-alapú WebDAV szerver telepítését írja le,
LDAP-al az azonosításhoz, és SSL-el a titkosításhoz.
_________________________________________________________________
Tartalomjegyzék
1. [1]Bevezetés
1.1. [2]Erről a dokumentumról
1.2. [3]Közreműködők
1.3. [4]Mi az Apache?
1.4. [5]Mi a WebDAV?
1.5. [6]Mi a PHP?
1.6. [7]Mi a MySQL?
1.7. [8]Mire van szükségünk?
1.8. [9]Feltételezések
1.9. [10]Magyar fordítás
2. [11]Követelmények
2.1. [12]Alapok
2.2. [13]Apache 2.0.46
2.3. [14]OpenSSL
2.4. [15]iPlanet LDAP programkönyvtár
2.5. [16]mod_auth_ldap
2.6. [17]MySQL adatbázismotor
2.7. [18]PHP
3. [19]Telepítés
3.1. [20]Telepítési feltételek
3.2. [21]MySQL
3.3. [22]Apache 2.0
3.4. [23]mod_auth_ldap
3.5. [24]Tanúsítvány adatbázis az LDAPS:// részére
3.6. [25]PHP
4. [26]A WebDAV szolgáltatások telepítése és beállítása
4.1. [27]Módosítások az /usr/local/apache/conf/httpd.conf fájlban
4.2. [28]Egy DAVLockDB könyvtár létrehozása
4.3. [29]A DAV engedélyezése
4.4. [30]Egy "DAVtest" nevű könyvtár létrehozása
4.5. [31]Az Apache újraindítása
4.6. [32]A WebDAV protokoll tesztelése
5. [33]A WebDAV szerver üzemeltetése
5.1. [34]A DAV megosztott hozzáférésének korlátozása
5.2. [35]Írás jog korlátozása DAV megosztás alatt
6. [36]Az SSL megvalósítása és használata a HTTP forgalom
biztonságossá tételére
6.1. [37]Az SSL bemutatása
6.2. [38]Teszt tanúsítványok
6.3. [39]Tanúsítványok "üzemi" használatra
6.4. [40]Hogyan generálhatsz a CSR-t?
6.5. [41]A szerver titkos kulcsának és tanúsítványának telepítése
6.6. [42]A jelmondat (passphrase) eltávolítása az RSA titkos
kulcsból
6.7. [43]SSL teljesítménybeállítás
A. [44]HTTP/HTTPS teljesítménybeállító programok
B. [45]Hardveres SSL titkosítási megoldások
C. [46]Megbízott tanúsítvány hatóságok (Trusted Certificate
Authorities)
[47]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és Megjegyzés:
Ha bármilyen problémával találkozol az Apache vagy valamely modul
telepítésénél, lépj kapcsolatba velem a <[48]saqib@seagate.com> e-mail
címen.
_________________________________________________________________
1.1. Erről a dokumentumról
Ez a dokumentum eredetileg 2001-ben készült. Azóta számos frissítés és
bővítés történt. Köszönet minden közreműködőnek a frissítésekért és
javításokért.
Eme dokumentum XML kódja megtalálható a
[49]http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWT
O.xml webhelyen.
A dokumentum utolsó változata a
[50]http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWT
O.html honlapon található.
_________________________________________________________________
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
[51]http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWT
O.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.3. Mi az Apache?
Az Apache egy nyílt forráskódú http szerver modern operációs rendszerekre,
amilyen a UNIX és a Windows NT. Http szolgáltatásokat nyújt a jelenlegi HTTP
szabványoknak megfelelően.
Az Apache szabadon/ingyenesen letölthető a [52]http://httpd.apache.org/
webhelyről.
_________________________________________________________________
1.4. Mi a WebDAV?
A WebDAV egy Web enabled Distributed Authoring and Versioning, vagyis Web
alapú Elosztott Szerzői és Változatnyilvántartó rendszer. Együttműködési
környezetet biztosít azoknak a felhasználóknak, akik
szerkesztik/karbantartják egy webszerver fájljait. Technikailag a DAV a http
protokoll kiterjesztése.
Íme egy rövid leírás a DAV által biztosított bővítésekről:
Felülírási védelem: Zárolási és feloldási mechanizmus az "elveszett
frissítés" probléma kiküszöbölésére. A DAV protokoll mind a megosztott, mind
a kizárólagos zárolásokat támogatja.
Tulajdonságok: Meta-adatok (cím, tárgy, készítő, stb.)
Nevek karbantartása: Fájlok másolása, átnevezése, mozgatása és törlése.
Hozzáférés-szabályozás (Access Control; AC): A hozzáférés korlátozása
bizonyos erőforrásokhoz. Jelenleg a DAV feltételezi az AC meglétét, és nem
biztosít túl erős azonosítási mechanizmust.
Változatnyilvántartás: Dokumentumok revíziójának nyilvántartása. Még nem
megvalósított.
_________________________________________________________________
1.5. Mi a PHP?
A PHP (rekurzív betűszó "PHP: Hypertext Preprocessor"; "PHP: Hiperszöveg
Előfeldolgozó") széleskörűen használt, nyíl forráskódú, általános célú
szkript-nyelv, amely különösen Web-es fejlesztéseknél alkalmazható és
beágyazható a HTML-be.
A PHP megtalálható a [53]http://www.php.net webhelyen.
_________________________________________________________________
1.6. Mi a MySQL?
A MySQL a legnépszerűbb nyílt forráskódú SQL adatbázis-kezelő, a MySQL AB
fejleszti, terjeszti és támogatja.
A MySQL adatbázismotor letölthető a [54]http://www.MySQL.com/ webhelyről.
_________________________________________________________________
1.7. Mire van szükségünk?
A cél eléréséhez szükséges eszközök:
i. C Compiler, például GCC
ii. Apache 2 Web szerver
iii. LDAP Module az Apache-hoz
iv. iPlanet LDAP lib fájlok
v. SSL motor
vi. PHP
vii. MySQL adatbázismotor
Megjegyzés Megjegyzés:
Mindezen csomagok szabadon hozzáférhetők és letölthetők a Net-ről.
_________________________________________________________________
1.8. Feltételezések
A dokumentum feltételezi, hogy a következők már telepítve vannak a
rendszereden:
i. gzip vagy gunzip - megtalálható a [55]http://www.gnu.org webhelyen
ii. gcc és GNU make - megtalálható a [56]http://www.gnu.org webhelyen
_________________________________________________________________
1.9. Magyar fordítás
A magyar fordítást [57]Kilián Magdolna készítette (2003.03.28). A
lektorálást [58]Szijjártó László végezte el (2003.07.09). Utoljára [59]Daczi
(dacas) László frissítette (2003.12.10). A dokumentum legfrissebb változata
megtalálható a [60]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.1. Alapok
Szükséged van Solarisra/Linuxra és GNU CC fordítóra a gépen. A GNU gnzip és
GNU tar szintén szükséges.
_________________________________________________________________
2.2. Apache 2.0.46
Az Apache egy HTTP szerver, Web-es alkalmazások kiszolgálására használjuk.
Töltsd le az Apache 2.0.46 forráskódot a
[61]http://www.apache.org/dist/httpd/ webhelyről.
_________________________________________________________________
2.3. OpenSSL
Töltsd le az OpenSSL csomagot a [62]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
[63]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).
_________________________________________________________________
2.5. mod_auth_ldap
Az mod_auth_ldap csomagot az LDAP támogatás Apache-ba fordítására fogjuk
használni. Töltsd le a
[64]http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache
2.html honlapról.
_________________________________________________________________
2.6. MySQL adatbázismotor
Töltsd le a soron következő MySQL csomagot a
[65]http://www.MySQL.com/downloads/index.html honlapról.
_________________________________________________________________
2.7. PHP
Töltsd le a PHP forráskódját a [66]http://www.php.net/downloads.php
webhelyről.
_________________________________________________________________
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.1.1. iPlanet LDAP SDK
Jelentkezz be root felhasználóként, a su parancs használatával:
$ su -
Hozzd létre az /usr/local/iplanet-ldap-sdk.5 könyvtárat. Másold az
ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar.gz fájlt a
/tmp/downloads könyvtárból az /usr/local/iplanet-ldap-sdk.5
könyvtárba.
# mkdir /usr/local/iplanet-ldap-sdk.5
# cp /tmp/downloads/ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar /usr/local/
iplanet-ldap-sdk.5
# cd /usr/local/iplanet-ldap-sdk.5
# tar -xvf ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar
Most az összes szükséges iPlanet LDAP lib fájlnak a megfelelő
könyvtárban kell lennie.
_________________________________________________________________
3.1.2. OpenSSL motor
Ezután az OpenSSL motort kell telepítened.
Az OpenSSL az SSL/TLS protokoll nyílt forráskódú megvalósítása. Az OpenSSL
szükséges az SSL tanúsítványok létrehozásához és kezeléséhez a webszerveren.
A telepítés a lib fájlokhoz is szükséges, ezeket az SSL modul az Apache
kiszolgálására használja.
Lépj be abba a könyvtárba, ahova az OpenSSL forráskódjának fájljait tetted.
# cd /tmp/download
# gzip -d openssl.x.x.tar.gz
# tar -xvf openssl.x.x.tar
# cd openssl.x.x
# make
# make test
# make install
A make install lefutása után az openssl futtatható fájljai az
/usr/local/ssl könyvtárban lesznek.
_________________________________________________________________
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 --d
efaults-extra-file=/usr/local/MySQL/data/my.cnf --basedir=/usr/local/MySQL --da
tadir=/usr/local/MySQL/data --user=MySQL --pid-file=/usr/local/MySQL/data/downl
oa
_________________________________________________________________
3.2.2. A MySQL leállítása
A MySQL kiszolgáló leállításához kövesd az alábbi útmutatást:
# cd /usr/local/MySQL
# ./bin/MySQLadmin -u root -p shutdown
_________________________________________________________________
3.2.3. A Data Directory helyének meghatározása
A MySQL démon minden információt egy "Data Directory" nevű könyvtárban
tárol. Ha követted a fenti útmutatást, a Data Directory megtalálható az
/usr/local/MySQL/data könyvtár alatt.
A Data Directory helyének meghatározásához használd a MySQLadmin
segédprogramot, az alábbi módon:
# /usr/local/MySQL/bin/MySQLadmin variables -u root --password={your_password}
| grep datadir
_________________________________________________________________
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-lda
p-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/loc
al/iplanet-ldap-sdk.5/
# make
# make install
_________________________________________________________________
3.5. Tanúsítvány adatbázis az LDAPS:// részére
Le kell töltened a cert7.db és key7.db adatbázisokat a
[67]http://www.xml-dev.com/xml/key3.db és
[68]http://www.xml-dev.com/xml/cert7.db webhelyről és el kell helyezned az
/usr/local/apache2/sslcert/ könyvtárban.
_________________________________________________________________
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.1. Módosítások az /usr/local/apache/conf/httpd.conf fájlban
Ellenőrizd a következő Apache direktívák meglétét az
/usr/local/apache/conf/httpd.conf fájlban:
Addmodule mod_dav.c
Amennyiben nincs benne, add hozzá. Ez jelzi az Apache számára a DAV
képesség meglétét. A direktívát mindenképp konténeren (container)
kívül kell elhelyezni.
Ezt követően meg kell adnod azt, hogy az Apache hol tárolja a
DAVLockDB fájlt. Ez egy zárolási adatbázis a WebDAV-hoz, ezt írhatóvá
kell tenned a httpd processz számára.
A DAVLock fájlt én az /usr/local/apache/var könyvtárban tárolom. Én
ezt a könyvtárat más célokra is használom. Add hozzá a következő sort
az /usr/local/apache/conf/httpd.conf fájlhoz, annak meghatározásához,
hogy a DAVLockDB fájl az /usr/local/apache/var könyvtárban van:
DAVLockDB /usr/local/apache/var/DAVLock
Az utasítást a tárolón kívül helyezd el.
_________________________________________________________________
4.2. Egy DAVLockDB könyvtár létrehozása
Mint fent említettem, egy könyvtárat kell létrehoznod a DAVLockDB fájl
számára, majd írhatóvá kell tenned a webszerver folyamat számára. Általában
a webszerver folyamat "nobody" felhasználói néven fut. Ellenőrizd ezt a
következő parancs használatával:
ps -ef | grep httpd
Az /usr/local/apache alatt hozz létre egy könyvtárat, és állítsd be a
hozzáférési jogokat, a következő parancsok használatával:
# cd /usr/local/apache
# mkdir var
# chmod -R 755 var/
# chown -R nobody var/
# chgrp -R nobody var/
_________________________________________________________________
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
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
_________________________________________________________________
4.4. Egy "DAVtest" nevű könyvtár létrehozása
Mint egy korábbi részben említettem, minden DAV könyvtárnak írhatónak kell
lennie a webszerver folyamat által. Ebben a példában feltételezzük, hogy a
webszerver "nobody" név alatt fut. Ez az általános. A felhasználó
megtekintéséhez (akinek neve alatt a webszerver fut) használd a
# ps -ef | grep httpd
parancsot.
Hozz létre egy tesztkönyvtárat "DAVtest" néven az
/usr/local/apache2/htdocs könyvtár alatt:
# mkdir /usr/local/apache/htdocs/DAVtest
Változtasd meg a hozzáférési jogokat a könyvtárban, az legyen
írható-olvasható a httpd folyamat számára. Feltételezve, hogy a httpd
"nobody" felhasználónév alatt fut, használd a következő parancsokat:
# cd /usr/local/apache/htdocs
# chmod -R 755 DAVtest/
# chown -R nobody DAVtest/
# chgrp -R nobody DAVtest/
_________________________________________________________________
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 [69]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 [70]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 :
Dav On
#Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "LDAP_userid_password_required"
AuthType Basic
Require valid-user
LDAP_Server ldap.server.com
LDAP_Port 389
Base_DN "o=ROOT"
UID_Attr uid
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.
_________________________________________________________________
5.1.1. Hozzáférés korlátozása egyéni UID alapján
LDAP UID-t is használhatjuk a DAV mappa hozzáférésének korlátozására.
A require valid-user direktíva megváltoztatható require user 334455 445566
értékre.
Ez a 334455 és 445566 UID-vel rendelkező felhasználókra korlátozza a
hozzáférést. Senki másnak nem lesz hozzáférése ehhez a mappához.
_________________________________________________________________
5.1.2. Hozzáférés korlátozása csoportok tagjai számára
A require direktívát használhatod csoportok tagjai hozzáférésének
korlátozására. Ezt megteheted az LDAP csoportok vagy az LDAP szűrők
használatával. A szűrőt az LDAP filter szintaxis szerint kell felépíteni.
_________________________________________________________________
5.2. Írás jog korlátozása DAV megosztás alatt
Lehetséges a DAV megosztások forrásainak szerkesztését bizonyos személyekre
korlátozni, mindemellett bárki megnézheti ezeket az erőforrásokat (például
fájlokat - dacas). Ezt könnyen teheted a címke használatával a
httpd.conf fájlban.
Dav On
#Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "LDAP_userid_password_required"
AuthType Basic
Require valid-user
LDAP_Server ldap.server.com
LDAP_Port 389
Base_DN "o=ROOT"
UID_Attr uid
A megváltoztatásával korlátozhatod adott személy írási jogát:
Require 334455
Alapvetően korlátozzuk a 334455 UID-vel rendelkező felhasználó PUT
POST DELETE PROPPATH MKCOL COPY MOVE LOCK és az UNLOCK jogát. Mindenki
más képes lesz használni a GET és PROPFIND módszert a forrásokon, de
mást nem.
_________________________________________________________________
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
[71]"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és Megjegyzé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 [72]HMAC, [73]SHA, [74]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 | _
`----------' `---------' _ (_)
_____ ____ ____ ____ _ _ ____ _| |_ _ ___ ____
| ___ | _ \ / ___)/ ___) | | | _ (_ _) |/ _ \| _ \
| ____| | | ( (___| | | |_| | |_| || |_| | |_| | | | |
|_____)_| |_|\____)_| \__ | __/ \__)_|\___/|_| |_|
(____/|_|
* 1. lépés: az eredeti "sima szöveg" titkosítása a feladó titkos
kulcsának használatával, ennek eredménye a "titkosított szöveg 1".
Ez biztosítja a feladó hitelességét.
* 2. lépés: a "titkosított szöveg 1" titkosítása a címzett nyilvános
kulcsával, ennek eredménye a "titkosított szöveg 2". Ez biztosítja
a címzett hitelességét (értsd: csak a címzett tudja visszafejteni
a szöveget a saját titkos kulcsával).
* 3. lépés: az SHA1 üzenet kivonat (ellenőrző összeg - dacas)
készítése a "sima szöveg" alapján.
* 4. lépés: SHA1 üzenet kivonat titkosítása a feladó titkos
kulcsával, ennek eredménye a "sima szöveg" digitális aláírása. Ezt
a digitális aláírást a címzett felhasználhatja az üzenet
sértetlenségének és a feladó hitelességének ellenőrzésére.
* 5. lépés: a "digitális aláírás" és a "titkosított szöveg 2"
elküldése a címzettnek.
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----'
__| |_____ ____ ____ _ _ ____ _| |_ _ ___ ____
/ _ | ___ |/ ___)/ ___) | | | _ (_ _) |/ _ \| _ \
( (_| | ____( (___| | | |_| | |_| || |_| | |_| | | | |
\____|_____)\____)_| \__ | __/ \__)_|\___/|_| |_|
(____/|_|
* 1. lépés: a "titkosított szöveg 2" visszafejtése a címzett titkos
kulcsának használatával, ennek eredménye a "titkosított szöveg 1".
* 2. lépés: a "titkosított szöveg 1" visszafejtése a feladó
nyilvános kulcsának használatával, ennek eredménye a "sima
szöveg".
* 3. lépés: SHA1 üzenet kivonat (ellenőrző összeg - dacas)
elkészítése, az előző 2 lépés eredményeként kapott "sima szöveg"
alapján.
* 4. lépés: a "digitális aláírás" visszafejtése a feladó nyilvános
kulcsának használatával, ennek eredménye az "SHA1 üzenet kivonat".
* 5. lépés: az "SHA üzenet kivonat #1" és "SHA üzenet kivonat #2"
összehasonlítása. Amennyiben a kettő egyezik, úgy az üzenet nem
módosult az átvitel alatt, így az eredeti "sima szöveg" sértetlen.
_________________________________________________________________
6.2. Teszt tanúsítványok
Az Apache fordítása közben létrehoztunk egy teszt tanúsítványt. A mod-ssl
csomagban lévő makefile programot használtuk az egyéni Tanúsítvány
létrehozásához. Erre a
# make certificate TYPE=custom
parancsot használtuk.
Ezt a tanúsítványt tesztelési célokra használhatjuk.
_________________________________________________________________
6.3. Tanúsítványok "üzemi" használatra
"Üzemi" használathoz szükségünk lesz egy tanúsítványra valamely Certificate
Authority-tól (tanúsítvány hatóság) (ezentúl CA). A CA-k a tanúsítványt
áruba bocsátók, akik egy megbízható CA listán vannak a felhasználó böngésző
kliensében. Mint azt az algoritmus titkosítás részben említettem, ha a CA
nincs a megbízott hatóságok listáján, a felhasználó figyelmeztető üzenetet
kap, amikor megpróbál kapcsolódni egy biztosított/biztonságos helyhez.
Hasonlóan a teszt tanúsítványokhoz, ez is küld egy figyelmeztető üzenetet a
felhasználó böngészőjének.
_________________________________________________________________
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.cs
r
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 privat
e.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
[75]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:
* Certificate
+ Version
+ Serial Number
+ Algorithm ID
+ Issuer
+ Validity
+
o Not Before
o Not After
+ Subject
+ Subject Public Key Info
+
o Public Key Algorithm
o RSA Public Key
+ Extensions
* Certificate Signature Algorithm
* Certificate Signature
_________________________________________________________________
6.5.1. Egy Digitális Tanúsítvány ellenőrzése
Egy X.509 Tanúsítvány ellenőrzésére használd a következő parancsot:
# openssl verify server.crt
server.crt: OK
Ahol a server.crt a Digitális Tanúsítványt tartalmazó fájl neve.
_________________________________________________________________
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és shmht 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és Megjegyzé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:
i. [76]SSLswamp - egy SSL-t használó szerverhez csatlakozni képes
terhelhetőségi teszt/teljesítménymérő program
ii. [77]HTTPERF - Egy eszköz a Web szerver teljesítményének
beméréséhez
iii. [78]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:
i. [79]CHIL (Cryptographic Hardware Interface Library; titkosító
hardverek csatolófelületeinek programkönyvtára) az nCipher-től
ii. [80]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:
i. [81]Baltimore
ii. [82]Entrust
iii. [83]GeoTrust
iv. [84]Thawte
v. [85]TrustCenter
A nyilvános kulcsú titkosítással kapcsolatos szavak gyűjteménye
A
Asymmetric Cryptography (aszimmetrikus titkosítás)
Ez a titkosítás egy kulcspárt - titkos (Private) és nyilvános
(Public) kulcsot használ. A titkos kulcsot (Private Key)
biztonságos helyen kell tartani, a nyilvános kulcsot (Public
Key) pedig széles körben terjeszteni.
C
Certificate (tanúsítvány)
Egy adatjegyzék, amely az [86]X.509 Format-ban szereplő
információkat tartalmazza.
Certificate Authority (CA) (tanúsítvány hatóság; TH) (CA)
A digitális tanúsítvány (Digital Certificate) kibocsátója. Azon
végfelhasználó (End-Entity) azonosságát is hitelesíti, amelynek
birtokában van a digitális tanúsítvány.
Certificate Signing Request (CSR) (tanúsítvány aláírási kérelem; TAK)
(CSR)
A tanúsítvány aláírási kérelem (Certificate Signing Request;
CSR) az, ami elküldésre kerül a tanúsítvány hatóságnak
(Certifiate Authority; CA) bejegyzésre. Az aláírási kérelem
tartalmazza a végfelhasználó (End-Entity) nyílvános kulcsát
(Public Key), amelyre a digitális tanúsítványt kérelmezik.
Common Name (CN) (közönséges név) (CN)
A közönséges név (Common Name) a végfelhasználó (End-Entity)
neve, például Saqib Ali. Ha a végfelhasználó egy webszerver,
akkor ez a webszerver "teljesen képzett domain neve" (Fully
Qualified Domain Name; FQDN).
D
Digital Certificate (digitális tanúsítvány)
Egy tanúsítvány kapcsolja a nyilvános kulcsot (Public Key) egy
személyhez (Subject; end-entity). Ez a tanúsítvány az [87]X.509
Format-ban meghatározott egyéb azonosító információkat is
tartalmaz a személyről. A kibocsátó CA (tanúsítvány hatóság;
TH) aláírásával van ellátva, annak titkos kulcsát használva
ehhez a művelethez. Íme egy [88]digitális tanúsítvány.
Digital Signature (digitális aláírás)
Egy digitális aláírás (Digital Signature) az üzenetkivonat
(Message Digest) titkos kulccsal történő aláírásával
készíthető el. Biztosít a küldő (Sender)
(személy)azonosságáról (Identity) és az adat sértetlenségéről
(Integrity of the Data).
E
End-Entity (végfelhasználó)
Egy felhasználó, aki részt vesz a nyilvános kulcsú
titkosításban. Általában szerver, szolgáltatás (Service),
útválasztó (Router) vagy személy. A tanúsítvány hatóság
(Certificate Authority; CA) nem végfelhasználó.
H
Hash (a titkosítás eredménye)
A titkosítás eredménye egy hexadecimális szám, amely egy szöveg
karakterláncából lett generálva, ezért két különböző
karakterlánc nem képes ugyanazt a titkosított eredményt
produkálni.
HMAC: Keyed Hashing for Message Authentication (kulcsos titkosítás
üzenethitelesítéshez) (HMAC)
A HMAC egy megvalósítása az üzenethitelesítő-kód algoritmusnak
(Message Authentication Code Algorithm).
M
Message Authentication Code (üzenethitelesítő-kód) (MAC)
Hasonló az üzenetkivonathoz (Message Digest; Hash/Fingerprint),
azzal a különbséggel, hogy a titkosított eredmény
kiszámításához a megosztott rejtett kulcs (Shared Secret Key)
lett felhasználva. Mivel a rejtett kulcs lett felhasználva,
ezért egy támadó nem tudja megváltoztatni az üzenetkivonatot.
Mindezek mellett a rejtett kulcsok kell először közölni a
partnerekkel, ellentétben a digitális aláírással, amelynél az
üzenetkivonat a titkos kulccsal (Private Key) van aláírva. A
HMAC egy példája az üzenethitelesítő-kód algoritmusnak.
Message Digest 5 - MD5 (üzenetkivonat 5) (MD5)
Az üzenetkivonat 5 (Message Digest 5; MD5) egy 128 bites
egyirányú titkosító függvény.
P
Private Key (titkos kulcs)
A titkos kulcsot - az aszimmetrikus titkosítási rendszerben - a
tulajdonosa (End-Entity) biztonságos helyen tartja.
Titkosításra és visszafejtésre használható.
Public Key (nyilvános kulcs)
Az aszimmetrikus titkosítás nyilvános kulcsát széles körben
terjesztik. Titkosításra és visszafejtésre használható.
Public Key Infrastructure (PKI) (nyilvános kulcsos rendszer; NYKR)
(PKI)
Nyilvános kulcsos rendszer.
S
SHA-1: Secure Hash Algorithm (biztonságos titkosító algoritmus) (MD5)
A biztonságos titkosító algoritmus (Secure Hash Algorithm;
SHA-1) egy 160 bites egyirányú titkosító függvény. Az üzenet
maximális hossza 2^64 bit.
Secure Socket Layer (SSL) (Biztonsági Alréteg) (SSL)
Az SSL egy biztonsági protokoll, amely hitelességet (digitális
aláírás), megbízhatóságot (titkosítás) és adatsértetlenséget
(üzenet ellenőrzés - MD5, SHA, stb.) biztosít
Symmetric Cryptography (Szimmetrikus Titkosítás)
Ebben a rendszerben az üzenet ugyanazzal a kulccsal
titkosítható és visszafejthető. (((n^2-n))/2) számú kulcsra
van szüksége n felhasználónak, ha ezen módszer szerint akarnak
titkosítani.
References
1. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#intro
2. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN62
3. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN69
4. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN73
5. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN78
6. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN92
7. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN97
8. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN102
9. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN123
10. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN133
11. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN140
12. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN143
13. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN146
14. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN150
15. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN154
16. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN158
17. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN162
18. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN166
19. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN170
20. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN173
21. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN208
22. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN245
23. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN271
24. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN284
25. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN290
26. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#config-webdav
27. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN310
28. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN326
29. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN340
30. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN350
31. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN365
32. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN377
33. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN402
34. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN414
35. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN434
36. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#ssl
37. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN448
38. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN512
39. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN518
40. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN522
41. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#InstallingServerCert
42. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN625
43. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN651
44. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN676
45. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN689
46. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#AEN699
47. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#glossary
48. mailto:saqib@seagate.com
49. http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml
50. http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.html
51. http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml
52. http://httpd.apache.org/
53. http://www.php.net/
54. http://www.MySQL.com/
55. http://www.gnu.org/
56. http://www.gnu.org/
57. mailto:souly1@freemail.hu_NO_SPAM
58. mailto:laca@janus.gimsz.sulinet.hu_NO_SPAM
59. mailto:dacas@freemail.hu_NO_SPAM
60. http://tldp.fsf.hu/index.html
61. http://www.apache.org/dist/httpd/
62. http://www.openssl.org/source/
63. http://wwws.sun.com/software/download/products/3ec28dbd.html
64. http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html
65. http://www.MySQL.com/downloads/index.html
66. http://www.php.net/downloads.php
67. http://www.xml-dev.com/xml/key3.db
68. http://www.xml-dev.com/xml/cert7.db
69. mailto:saqib@seagate.com
70. http://www.webdav.org/neon/litmus/
71. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#digitsign
72. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#hmac
73. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#sha1
74. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#md5
75. http://sunsolve.sun.com/pub-cgi/findPatch.pl?patchId=112438
76. http://distcache.sourceforge.net/
77. http://www.hpl.hp.com/personal/David_Mosberger/httperf.html
78. http://httpd.apache.org/docs-2.1/en/programs/ab.html
79. http://www.ncipher.com/
80. http://httpd.apache.org/docs-2.1/en/programs/ab.html
81. http://www.baltimore.com/
82. http://www.entrust.com/
83. http://www.globalsign.net/
84. http://www.thawte.com/
85. http://www.trustcenter.de/
86. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#InstallingServerCert
87. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#InstallingServerCert
88. file://localhost/home/dacas/temp/Apache-WebDAV-LDAP-HOWTO-hu.html#viewingdigitcertcontent