SSL? Zakaj pa ne!
Namestitev SSL-ja se sliši zelo zlovešče, vendar je v resnici zelo enostavno. Vse skupaj smo za vas napisali v 5 enostavnih korakih. Najbrž nam zaradi besede “varnost”, postane to zelo zakomplicirano in težko. Tudi za sistemskega administratorja je enako enostavno kot končnega uporabnika, ki mora navesti le s. Vse skupaj zagotovo deluje na sistemu Debian 5.0.1, vendar tudi s starejšimi verzijami ne bi smeli imeti problema. Prav tako deluje na Ubuntu sistemih. Predpostavljam, da imate Apache strežnik že nameščen. Moja trenutna verzija je Apache/2.2.9.
1.Predlagamo, da predno karkoli nameščamo posodobimo pakete in vse posodobitve.
To storimo z orodjem apt.
apt-get update && apt-get upgrade
Potrebujemo pa še pakete, ki bodo generirali SSL certifikat, omogočiti moramo SSL podporo v Apacheju in nastaviti SSL.
2. Sedaj je čas, da generiramo certifikat.
Certifikat bo nudil zaščito za promet med serverjem in končnim uporabnikom, vendar je certifikat še vedno nepodposan – tega načeloma ne potrebujemo, vendar bo vsakega uporabnika obvestilo da je certifikat nepodpisan s strani katerekoli root organizacije.
openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem
Po vnosu ukaza bo računalnik zgeneriral ključ, vse poteka pa dokaj interaktivno saj se vam odpre preprost meni, kjer odgovarjate na preprosta vprašanja. Polja lahko sicer pustite prazna, če vnesete . če boste pustili prazno, pa bodo vnešeni privzeti odgovori. Predlagamo, da vseeno vpišemo nekaj svojih podatkov, saj gre za naš prvi certifikat!
Sedaj naš apache.pem potrebuje pravilne privilegije, da ga lahko Apache prebere.
chmod 600 /etc/apache2/apache.pem
Certifikat je narejen. Sedaj je edini “problem” še, da SSL ne deluje na portu 80, kot smo pri apacheju navajeni, da delujejo strani. Tako moramo v datoteko /etc/apache2/ports.conf dodati
Listen 443
3. Omogočimo SSL
a2enmod ssl
Sedaj dobimo ven nekaj takega:
Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run ‘/etc/init.d/apache2 restart’ to activate new configuration!
To pomeni sedaj, da je SSL modul v apacheju dodan, vklopljen, vendar še ne deluje, saj apache še ni prebral nove konfiguracijske datoteke (ports.conf) in da je potrebno reštartati apache strežnik.
apache2 -k graceful
apache2ctl -k graceful
Z metodo graceful smo dosegli, da je apache počakal da se vse trenutne povezave na strežnik apache prekinejo šele, ko uporabnik zaposti stran. S tem naprimer ne prekinemo downloadow.
4. Povežimo certifikat z virtualnimi hosti
Urejali bomo datoteko /etc/apache2/sites-available/default.
V prvi vrstici imamo NameVirtualHost *.
Ker bo sedaj apache tekel na dveh portih je potrebno popraviti vsak virtualni host posebaj. Najprej pa prvo vrstico zamenjajmo z:
NameVirtualHost *:80
NameVirtualHost *:443
Sedaj pa vsak host čaka, da ga popravimo. Kjer so navadni hosti in ne želimo SSL-ja je dovolj da dodamo :80. Oglejmo si na primeru.
Prej:
<VirtualHost *>
DocumentRoot /var/www/mojastran
ServerName primer.net
ServerAdmin mitja@konzola.net
ErrorLog /var/log/apache2/primer.log</VirtualHost>
popravimo na:
<VirtualHost *:80>
DocumentRoot /var/www/mojastran
ServerName primer.net
ServerAdmin mitja@konzola.net
ErrorLog /var/log/apache2/primer.log
</VirtualHost>
Tam kjer želimo SSL, pa ponovimo postopek, skopiramo celoten virutalhost in popravimo, da zgleda vse nekako takole:
<VirtualHost *:443>
DocumentRoot /var/www/mojastran
ServerName primer.net
ServerAdmin mitja@konzola.net
ErrorLog /var/log/apache2/primer.log
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>
To bo sicer vzelo nekaj časa, odvisno od števila virtualnih hostov, ki jih imate.
5. Ponovno poženemo apache in odpremo poljubno stran s SSL.
apache2 -k graceful
apache2ctl -k graceful
… izberemo poljuben host, odpremo priljubljen brskalnik in odpremo spletno stran.
Naprimer: https://pcstrokovnjak.com