28.6 Biztonságos webkiszolgáló beállítása SSL használatával

Amikor bizalmas adatok, például hitelkártyaszámok kerülnek továbbításra a webkiszolgáló és a kliens között, akkor felettébb kívánatos egy biztonságos, titkosított, hitelesített kapcsolat használata. A mod_ssl eros titkosítást biztosít és az SSL (Secure Sockets Layer), illetve TLS (Transport Layer Security) protokollok használatával védi a webkiszolgáló és a kliens közötti HTTP-kommunikációt. Az SSL/TSL használata esetén a webkiszolgáló és a kliens között privát kapcsolat jön létre. Garantált az adatok integritása, és mind a kliens, mind a kiszolgáló képes ellenorizni a másik hitelességét.

Ehhez a kiszolgáló, még mielott bármilyen URL-re válaszolna, egy SSL-tanúsítványt küld, benne a kiszolgáló érvényes azonosságával. Ezzel igazolja, hogy a kiszolgáló valóban a helyes végpontja a kommunikációnak. Ezenfelül a tanúsítvány használatával titkosított kapcsolat jön létre a kliens és a kiszolgáló között, így a nyílt szövegu adatok szabadon továbbíthatók a felfedés kockázata nélkül.

A mod_ssl does nem maga valósítja meg az SSL/TSL protokollokat, csupán közvetítoként muködik közre az Apache és egy SSL-függvénytár között. A openSUSE rendszerben ez utóbbi az OpenSSL függvénytár. Az OpenSSL az Apache mellett automatikusan telepítésre kerül.

A mod_ssl használatának legészrevehetobb jellemzoje, hogy az URL-ek https://-sel kezdodnek, nem http://-vel.

28.6.1 SSL-tanúsítvány eloállítása

Az SSL/TSL használatához a webkiszolgálón szükség van egy SSL-tanúsítványra. A tanúsítvány a webkiszolgáló és a kliens közötti hitelesítés során játszik szerepet, ennek alapján azonosíthatók az egyes felek egyértelmuen. A tanúsítvány integritásának biztosítása érdekében azt egy olyan félnek kell aláírnia, amelyben minden felhasználó megbízik.

A létrehozható tanúsítványoknak három fajtája van: üres (dummy) tanúsítványok kizárólag teszteléshez, önállóan aláírt tanúsítványok azon felhasználók számára, akik megbíznak Önben, illetve az egy független, széles körben ismert és elfogadott tanúsítványhatóság (CA) által aláírt tanúsítványok.

A tanúsítványok eloállítása két lépésbol álló folyamat. Eloször egy saját kulcs készül a tanúsítványhatóság számára; utána a kiszolgálótanúsítvány ezzel a kulccsal lesz aláírva.

TANÁCS: További információk

Az SSL/TSL fogalmaival és meghatározásaival kapcsolatos további részletek a http://httpd.apache.org/docs/2.2/ssl/ssl_intro.html címen olvashatók.

Üres tanúsítvány eloállítása

Az üres tanúsítványok eloállítása igen egyszeru. Mindössze meg kell hívni az /usr/bin/gensslcert parancsfájlt. Ez létrehozza vagy felülírja az alábbi fájlokat:

  • /etc/apache2/ssl.crt/ca.crt

  • /etc/apache2/ssl.crt/server.crt

  • /etc/apache2/ssl.key/server.key

  • /etc/apache2/ssl.csr/server.csr

A ca.crt egy másolata bekerül az /srv/www/htdocs/CA.crt helyre is, letöltéshez.

FONTOS: Éles rendszeren nem szabad üres tanúsítványt használni. Kizárólag tesztelési célokat szolgál.

Önállóan aláírt tanúsítvány létrehozása

Ha egy intraneten vagy felhasználók meghatározott köre számára hoz létre biztonságos webkiszolgálót, akkor elegendo lehet, ha csak a saját tanúsítványhatóság (CA) által aláírt tanúsítványt használ.

Az önállóan aláírt tanúsítványok létrehozása egy interaktív, kilenclépéses folyamat. Váltson át az /usr/share/doc/packages/apache2 könyvtárba, és futtassa le az alábbi parancsot: ./mkcert.sh make --no-print-directory /usr/bin/openssl /usr/sbin/ custom. Ne próbálja meg ezt a parancsot más helyrol futtatni. A program egy sor kérdést jelenít meg, amelyekre válaszolni kell.

Önállóan aláírt tanúsítvány eloállítása az mkcert.sh használatával

  1. Válassza ki a tanúsítványokhoz használt aláírási algoritmust

    Érdemes az RSA-t (R, ez az alapértelmezés) választani, mert néhány régebbi böngészonek gondjai vannak a DSA-val.

  2. RSA saját kulcs eloállítása a CA számára (1024 bit)

    Nincs szükség egyéb beavatkozásra.

  3. X.509 tanúsítvány aláírási kérés eloállítása a CA számára

    Itt kell létrehozni a CA megkülönböztetett nevét. Ehhez meg kell válaszolni néhány kérdést, például meg kell adni az ország és a szervezet nevét. Érvényes adatokat adjon meg, mert mindez késobb látszani fog a tanúsítványban. Nem muszáj minden kérdésre válaszolni. Ha valamelyik nem alkalmazható, vagy üresen kívánja hagyni, akkor adjon meg egy . karaktert válaszul. Az általános név (common name) a CA-nak magának a neve – célszeruen valami értelmes nevet adjon meg, például azt, hogy Futrimpex Kft. CA (ha például így hívják a céget).

  4. X.509 tanúsítvány eloállítása a CA számára, saját maga által aláírva

    Válassza a 3-as (az alapértelmezett) tanúsítványverziót.

  5. RSA saját kulcs eloállítása a kiszolgáló számára (1024 bit)

    Nincs szükség egyéb beavatkozásra.

  6. X.509 tanúsítvány aláírási kérés eloállítása a kiszolgáló számára

    Itt hozza létre a kiszolgáló megkülönböztetett nevét. A kérdések szinte tökéletesen megegyeznek azokkal, amelyeket a CA megkülönböztetett nevénél megválaszolt. Az itt beírt adatok a webkiszolgálóra vonatkoznak, és nem kell feltétlenül megegyezniük a CA adataival (lehet például, hogy a kiszolgáló valahol másutt van fizikailag).

    FONTOS: Általános név választása

    Az itt megadott általános név a biztonságos kiszolgáló teljesen megadott állomásneve kell, hogy legyen (tehát például www.example.com). Ha nem ezt adja meg, akkor a böngészo a kiszolgáló elérésekor figyelmeztetést fog kiírni, hogy a tanúsítvány nem felel meg a kiszolgálónak.

  7. A saját CA által aláírt X.509 tanúsítvány eloállítása

    Válassza a 3-as (az alapértelmezett) tanúsítványverziót.

  8. A CA saját RSA-kulcsának titkosítása egy jelszóval a biztonság érdekében

    Határozottan javasolt a CA saját kulcsát titkosítani egy jelszóval, ezért ebben a lépésben Y-nal válaszoljon és adjon meg egy jelszót.

  9. A kiszolgáló saját saját RSA-kulcsának titkosítása egy jelszóval a biztonság érdekében

    Ha a kiszolgáló kulcsát is titkosítja egy jelszóval, akkor ezt a jelszót minden egyes alkalommal meg kell majd adnia, amikor elindítja a webkiszolgálót. Ez megnehezíti a webkiszolgáló automatikus indítását a rendszer indításakor vagy a webkiszolgáló újraindításakor. Éppen ezért a szokásos válasz erre a kérdésre az N. Ne feledje ugyanakkor, hogy ha nincs jelszóval titkosíta, akkor ez a kulcs védtelen, ezért gyozodjön meg róla, hogy csak az arra jogosult személyek férhetnek hozzá a kulcshoz.

    FONTOS: A kiszolgáló kulcsának titkosítása

    Ha úgy döntött, hogy titkosítja jelszóval a kiszolgáló kulcsát, akkor növelje meg az APACHE_TIMEOUT értékét az /etc/sysconfig/apache2 fájlban. Ellenkezo esetben nem lesz elegendo ideje beírni a jelszót, mielott a kiszolgáló leállnasikertelen indításra hivatkozva.

A parancsfájl eredményoldalán megjelenik az eloállított kulcsok és tanúsítványok listája. Szemben azzal, amit a parancsfájl állít, a fájlok nem a helyi conf könyvtárban jöttek létre, hanem a megfelelo helyen, az /etc/apache2/ könyvtárban.

Az utolsó lépés a CA-tanúsítványfájl átmásolása az /etc/apache2/ssl.crt/ca.crt helyrol egy olyan helyre, ahol a felhasználók elérhetik és felvehetik az ismert és megbízható CA-k közé webböngészoikben. Ellenkezo esetben a böngészo panaszkodni fog, hogy a tanúsítványt egy ismeretlen hatóság állította ki. A tanúsítvány egy évig érvényes.

FONTOS: Önállóan aláírt tanúsítványok

Csak olyan webkiszolgálón használjon önállóan aláírt tanúsítványt, amelyet olyan emberek érnek el, akik megbíznak Önben és elfogadják tanúsítványhatóságnak. Egy nyilvános webáruházban például nem javasolt ilyen tanúsítványt használni.

Hivatalosan aláírt tanúsítvány beszerzése

Számos hivatalos tanúsítványhatóság létezik, amely vállalja a tanúsítványok aláírását. A tanúsítványt egy megbízható harmadik fél írja alá, ettol megbízható. A nyilvánosan muködo webkiszolgálók általában ilyen, hivatalos tanúsítványt használnak.

A legismertett hivatalos CA-k a Thawte (http://www.thawte.com/) és a Verisign (http://www.verisign.com). Ezek és más CA-k be is vannak építve az összes böngészobe, úgyhogy az általuk aláírt tanúsítványokat a böngészok automatikusan elfogadják.

Egy hivatalosan aláírt tanúsítvány kérésekor az ember nem a tanúsítványt küldi el a CA-nak. Helyette tanúsítvány-aláírási kérést (Certificate Signing Request, CSR) kell küldeni. Egy CSR létrehozásához az /usr/share/ssl/misc/CA.sh -newreq parancsfájlt kell meghívni.

A parancsfájl eloször bekér egy jelszót, amellyel titkosítani fogja a CSR-t. Ezután bekéri a megkülönböztetett nevet. Ehhez meg kell válaszolni néhány kérdést, például meg kell adni az ország és a szervezet nevét. Érvényes adatokat adjon meg, mert mindez késobb látszani fog a tanúsítványban és le is ellenorzik. Nem muszáj minden kérdésre válaszolni. Ha valamelyik nem alkalmazható, vagy üresen kívánja hagyni, akkor adjon meg egy . karaktert válaszul. Az általános név (common name) a CA-nak magának a neve – célszeruen valami értelmes nevet adjon meg, például azt, hogy Futrimpex Kft. CA (ha például így hívják a céget). Utoljára egy ellenorzo jelszót és egy alternatív cégnevet kell megadni.

A CSR ugyanabba a könyvtárba kerül, mint amelyikbol a parancsfájlt meghívta. A fájl neve newreq.pem lesz.

28.6.2 Apache beállítása SSL-hez

Az SSL- és TLS-kérések alapértelmezett portszáma a webkiszolgáló oldalán a 443-as. Egy normál, a 80-as porton figyelo Apache és egy, a 443-as porton figyelo SSL/TLS-es Apache között nincs ütközés. Valójában a HTTP és a HTTPS akár ugyanazon az Apache-példányon is futtatható. Általában különbözo virtuális gépeket állítanak be a 80-as és a 443-as portokhoz a virtuális kiszolgálók elkülönítéséhez.

FONTOS: Tuzfal beállítása

Ne felejtse el kinyitni a 443-as portot a tuzfalon az SSL-es Apache számára. Ez elvégezheto a YaST-tal is, a Szakasz 33.4.1, Tuzfal beállítása a YaST segítségével részben leírt módon.

Az SSL használatához azt be kell kapcsolni a globális kiszolgálókonfigurációban. Nyissa meg az /etc/sysconfig/apache2 fájlt egy szövegszerkesztoben és keresse ki az APACHE_MODULES részt. Ha még nem szerepelne, vegye fel az ssl-t a modulok listájába (a mod_ssl is alapértelmezés szerint be van kapcsolva). Ezután keresse ki az APACHE_SERVER_FLAGS részt és ott is írja be, hogy SSL. Ha úgy döntött, hogy jelszóval védi a kiszolgálótanúsítványt, akkor növelje meg az APACHE_TIMEOUT kello mértékben ahhoz, hogy legyen ideje beírni a jelszót az Apache indulásakor. Indítsa újra a kiszolgálót a módosítások érvényre juttatásához. Most nem elegendo az újratöltés.

A virtuálisgép-konfigurációs könyvtárban van egy sablonfájl (/etc/apache2/vhosts.d/vhost-ssl.template) SSL-specifikus direktívákkal, megjegyzésekkel boségesen ellátva. A virtuális gépek általános beállításaival kapcsolatban forduljon a Virtuális gépek konfigurációja részhez.

Elso lépésként másolja át a sablontfájlt az /etc/apache2/vhosts.d/sajatSSL-host.conf fájlba és módosítsa igény szerint. Általában elegendo az alábbi értékeket módosítani:

  • DocumentRoot

  • ServerName

  • ServerAdmin

  • ErrorLog

  • TransferLog

FONTOS: Név alapú virtuális gépek és SSL

Csupán egyetlen IP-címmel rendelkezo kiszolgálón nem lehet több SSL-es virtuális gépet futtatni. Beállítani ugyan be lehet egy ilyen rendszert, de az ezt meglátogató felhasználók minden egyes alkalommal figyelmezteto üzenetet fognak kapni, hogy a tanúsítvány nem egyezik a kiszolgáló nevével. Minden egyes SSL-re felkészített tartománynak saját IP-címmel kell rendelkeznie ahhoz, hogy érvényes SSL-tanúsítvánnyal tudjon kommunikálni.