Bevezető, certificate

Üdvözlök mindenkit!
Manapság egyre nagyobb súly tevődik az adatvédelemre és a titkosításra. Az utóbbi hónapok adatkezelési botrányai adták az ötletet, hogy megírjam ezt a cikket nektek.
Több megoldás is létezik arra, hogy biztonságossá tegyük a kapcsolatot weboldalunk és a látogatók között. Erre az egyik legjobb az SSL tanúsítvány. Több fajta létezik, ennek részleteibe nem szeretnék belefolyni, ezért szorítkozzunk két nagy csoportra, az ún. önaláírt és az ingyenes tanúsítványokra.
Kattintsatok a továbbra és többet is megtudhattok a certekről!
Mi az a certificate?
Kezdjük ott, hogy amikor megnyitsz egy URL-t (pl. http://logout.hu), akkor a tartalmak sima szövegként (plain text) utaznak a szerver és a kliens (böngésző) között. Ez lehetőséget ad arra, hogy harmadik fél is hozzáférjen (lehallgassa) a kommunikációhoz, ezáltal "ellopva" pl. a felhasználónevünket / jelszavunkat, elolvashatja e-mailjeinket ...stb.
A fenti probléma megoldására született az SSL - Secure Socket Layer (Protocol). A technológia tanúsítvány által hitelesíti és titkosítja a kommunikációt a szerver és a kliens között.
Tanúsítványt kétféleképpen szerezhetünk be.
Az egyik módja az ún. önaláírt tanúsítvány, ekkor saját magunknak generálunk certificate-et. Ezzel megvalósul ugyan a titkosítás, de mivel bárki generálhat magának, így a tulajdonosa nem hitelesített. Ekkor a böngésző felhívja a figyelmet erre, mint ahogy az a lenti képen is látható.
Erre ad megoldást a "fizetős" (vagy ingyenes) certificate, amikor egy erre szakosodott cég "garantálja" a tanúsítvány tulajdonosának kilétét. Ilyenkor a böngészőnk sem riaszt. A fizetős tanúsítványok skálája elég nagy, biztonsági szinttől függően, áruk a pár ezer forinttól az éves szinten több százezres kategóriáig terjed.
A továbbiakban egy alap ingyenes tanúsítványt fogunk beüzemelni egy weblapra a StartSSL ingyenes certjével.
StartSSL
Először is regisztrálnunk kell a StartSSL.com oldalon.
A bal oldali menüben kattintsuk a Control Panel menüpontra, utána pedig a Sign-up gombra. Itt értelemszerűen töltsük ki a szükséges mezőket. A regisztrációs procedúra végén egy tanúsítványt fog telepíteni a gépünkre, mellyel felhasználónév / jelszó nélkül tudunk majd a továbbiakban belépni a weblapra.
A Control Panel Validations Wizzard menüjében hozzá kell adnunk a domaint, melyre szeretnénk certet kiállítani.
Fontos, hogy a domainünkhöz legyen létrehozva egy az alábbi e-mail cimek közül:
Ezután itt megadjuk a mailben kapott megerősítő kódot.
Ezzel hozzáadtuk a domainünket, most következik a cert igénylése a Certificates Wizard menüben
Ezzel el is készült a privát kulcsunk, amit ssl.key néven mentsünk el. Fontos, hogy sima plain text formátumba mentsük le a textbox tartalmát.
Hozzáadjuk a domainünkhöz.
Kötelező megadnunk egy aldomaint, a www tökéletes lesz, az minden weblapnál létezik.
Most pedig legenerálja a tanúsítványt
Másoljuk ki az elkészült certet és mentsük el ssl.crt néven
Biztonsági okokból a legelőször legenerált privát kulcsunk (amit korábban ssl.key néven mentettünk le) titkosítva van, viszont a webszervernek a titkosítatlan verzió kell, ezt az alábbi paranccsal generálhatjuk le, miután felmásoltuk a fájlt a webszerverünkre (nálam /etc/apache/ssl/oldalam.hu). A StartSSL oldalán is van lehetőség a generálásra a Decrypt Private Key menüben. Ezután a szerverünkön nincs tovább szükség az ssl.key fájlra.
openssl rsa -in ssl.key -out private.key
Ezzel létrejön a private.key fájl, amit már az Apache is tud használni.
Szükségünk van még a StartSSL CA tanúsítványaira is, amit a képen látható menüben tudunk letölteni:
Összesen 4 fájlt, kell a szerverünkön a kívánt helyre másolnunk, ezek pedig a következők:
ca.pem - StartSSL CA tanúsítványa
private.key - A titkosítatlan privát kulcsunk
sub.class1.server.ca.pem - A StartSSL közbülső certje
ssl.crt - A tanúsítványunk
Apache config
Elérkeztünk arra a pontra, amikor beállítjuk a certeket az Apache siteu-nkhoz.
FONTOS: MIELŐTT BÁRMIT MÓDOSÍTOTOK KÉSZÍTSETEK BIZTONSÁGI MENTÉST A FÁJLOKRÓL
Szükségünk van az ssl Apache modulra, amit az alábbi paranccsal tudunk aktiválni
a2enmod ssl
service apache2 restart
Most meg kell mondanunk az Apache-nak, hogy a 443-as HTTPS porton is fogadja a kéréseket, ehhez szerkesszük a /etc/apache/ports.conf fájlt.
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Szerkesszük az oldalunkhoz tartozó config fájlt
nano /etc/apache2/sites-enabled/oldalunk
Valahogy így kell majd kinéznie:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/apache2/ssl/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
A configban az elérési utakra figyeljetek!
SSLCertificateFile /etc/apache2/ssl/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
Ezután indítsuk újra az Apacheot
service apache2 restart
A böngészőbe beírva a https://domainünk.hu címet máris titkosított a kapcsolat, melyet a böngészők a címsorban egy kis lakattal jeleznek.
Köszönöm a figyelmet, jó utánépítést!



