ID kaardiga autentimine Apache2 veebiserveriga: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Aellisso (talk | contribs)
Aellisso (talk | contribs)
Line 102: Line 102:


Ja et '''secure''' kataloogile ei saaks ligi ilma SSL’ita ja ID-kaardita, siis sama faili http virtuaalsaidi osasse järgmise sektsiooni:
Ja et '''secure''' kataloogile ei saaks ligi ilma SSL’ita ja ID-kaardita, siis sama faili http virtuaalsaidi osasse järgmise sektsiooni:
<pre>      
<pre>
         <Directory /var/www/www/secure>
         <Directory /var/www/www/secure>
               Order allow,deny
               Order allow,deny

Revision as of 15:22, 24 December 2009

Tegemisel (poolik versioon)


Legend

Meil on firma avalik veebileht www.firma.ee mida serveeritakse nii tavalise kui ka SSL-iga turvatud HTTP protokolli kaudu.

Sellel lehel on meil ka kataloog /secure privaatsema informatsiooniga ning sinna laseme ligi ainult ID-kaardiga.

Üldinformatsioon

Allolev juhend sobib id kaardiga autentimise seadistamiseks Apache veebiserveri versioonil alates 1.3.22 + mod_ssl 2.8.5. Käesolev juhend on testitud Ubuntu 9.10, Apache 2.2.12-1ubuntu2.1, mod_ssl 2.2.11 ja OpenSSL 0.9.8g versioonidega.

Sertifikaatide kehtivuse kontroll ei toimu online OCSP teenuse abil (tasuline), selle asemel kontrollitakse igat kliendi sertifikaati vastu kehtetute sertifikaatide nimekirja, mida omakorda aegajalt uuendatakse.

Töö käik

Kuna enamus järgnevaist toimingutest vajavad root kasutaja privileege, on 2 võimalust:

1. Käivitada iga säherdune käsk root kasutaja õigustes sudo abil näiteks:

sudo apt-get update
sudo nano /etc/hosts

2. Logime ennast root kasutajaks ning käivitame vajalikud toimingud. Kuna sudo-t sel juhul enam vaja ei lähe, hoiad selle arvelt pisut aega kokku. Samas on aga tunduvalt lihtsam midagi ära rikkuda, sest KÕIK käsud käivitatakse root kasutaja õigustes!

sudo -i
apt-get update
vi /etc/hosts

Kuidas keegi jätkab on igaühe enda valida. Järgnevas juhendis on root kasutaja õigustes käivitatavatel käskudel ees sudo. Kui otsustad ennast kohe root kasutajaks keerata, siis edaspidistes toimingutes võid (aga ei pea) sudo eest ära jätta. Kuna enamus konfiguratsioonifaile on root kasutaja omad, pead nende muutmiseks omama ka root kasutaja privileege - tekstieditor tuleb käivitada root kasutaja õigustes nagu ülal näidatud.

Eeldused

Selle juhendi kasutajalt eeldatakse linuxi käsurea mõningast tundmist ning oskust kasutada käsurealt tekstieditori n. vi või nano.

Eelduseks on korrektselt sooritatud Veebiserveri labor v.2, st. veebiserver on labori juhendi järgi seadistatud ning www.firma.ee lehekülje SSL osa toimib vigadeta.

Installeerimine

Lae alla Eesti ID kaardi juursertifikaadid ning paiguta need /etc/apache2 kataloogi:

cd /etc/apache2
sudo wget http://www.sk.ee/files/JUUR-SK.PEM.cer
sudo wget http://www.sk.ee/files/ESTEID-SK.PEM.cer
sudo wget http://www.sk.ee/files/ESTEID-SK%202007.PEM.cer


Lae alla kehtetute sertifikaatide nimekiri ning paiguta see /etc/apache2/crl kataloogi:

sudo mkdir /etc/apache2/crl
cd /etc/apache2/crl
sudo wget http://www.sk.ee/crls/esteid/esteid.crl
sudo wget http://www.sk.ee/crls/esteid/esteid2007.crl   
sudo wget http://www.sk.ee/crls/juur/crl.crl 

Seadistamine

ID kaardi juursertifikaatide seadistamine

Pane kõik 3 juursertifikaati kokku ühte faili, et veebiserveril oleks lihtsam neid lugeda:

sudo -i
cd /etc/apache2
cat JUUR-SK.PEM.cer ESTEID-SK.PEM.cer ESTEID-SK\ 2007.PEM.cer > juur.crt 

Sertifikaatide tühistusnimekirjade seadistamine

Kuna allalaetavad tühistusnimekirjad on apache jaoks loetamatul kujul, siis on vaja need konverteerida PEM formaati:

cd /etc/apache2/crl
sudo openssl crl -in esteid.crl -out esteid.crl -inform DER 
sudo openssl crl -in esteid2007.crl -out esteid2007.crl -inform DER
sudo openssl crl -in crl.crl -out crl.crl -inform DER 

Kuna tühistusnimekirju on vaja pidevalt uuendada, siis on selle artikli lõpus kirjeldatud ka sobiva skripti tegemine ning käivitamine.

SSL keskkonna seadistamine

Lisa apache konfiguratsioonifaili /etc/apache2/sites-enabled/www , SSL virtuaalsaidi osasse, read:

SSLCACertificateFile  /etc/apache2/juur.crt
SSLCARevocationPath /etc/apache2/crl

Lisa SSL virtuaalsaidi <Directory> sektsioonide juurde järgmine directory sektsioon:

        <Directory /var/www/www/secure>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig Options
                Order allow,deny
                allow from all
        </Directory>

Ülaltoodud sektsioonis määratakse ära kataloog, kuhu sisenedes nõutakse ID kaardiga autentimist. Antud juhul siis /var/www/www/secure

Ja et secure kataloogile ei saaks ligi ilma SSL’ita ja ID-kaardita, siis sama faili http virtuaalsaidi osasse järgmise sektsiooni:

        <Directory /var/www/www/secure>
               Order allow,deny
               deny from all
        </Directory>
Nõuame secure kataloogi sisenedes ID-kaarti, luues sinna .htaccess faili:
Nano /var/www/www/secure/.htaccess
Ja lisame read:
SSLVerifyClient require
SSLVerifyDepth 2 


Kõige lõpuks restardime veebiserveri:

/etc/init.d/apache2 restart


Nüüdseks peaks SSL ja ID-kaardi osa olema seadistatud.

Tulemuse kontroll

Tuleb luua index.php leht, mille vaatamisel kuvatakse phpinfo funktsiooni väljund:

sudo echo "<?php phpinfo(); ?>" > /var/www/www/secure/index.php
  • Istu nüüd mõne Windows arvuti taha, kus on kiipkaardilugeja ja brauser, millele on ID-kaardi asi selgeks tehtud ning katseta ligipääsu.

Võta ühendust oma serveriga: https://ip_aadress/secure või https://www.firma.ee/secure (eelnevalt on vaja serveri nimi defineerida kas oma arvuti hosts failis või enda võrgu nimeserveris) Server peaks nüüd sellele kataloogile ligi lubama AINULT eesti ID-kaardiga.


Tühistusnimekirjade uuendamine

Tühistusnimekirjade uuendamine tasuks läbi teha regulaarselt, kuna neid täiendatakse pidevalt.

Loome lihtsa skripti:

sudo -i
sudo vi uuenda.sh
<pre>

Skripti lisa järgmised käsud:
<pre>
cd /etc/apache2/crl/
rename -vf 's/\.crl$/\.old/' *.crl
wget http://www.sk.ee/crls/esteid/esteid.crl
wget http://www.sk.ee/crls/esteid/esteid2007.crl
wget http://www.sk.ee/crls/juur/crl.crl
openssl crl -in esteid.crl -out esteid.crl -inform DER
openssl crl -in esteid2007.crl -out esteid2007.crl -inform DER
openssl crl -in crl.crl -out crl.crl -inform DER
/etc/init.d/apache2 restart


Paigutame selle cron-i jooksma igal öösel kell 3:

Crontab –e
Vali editoriks nano [3]
0 3 * * * /root/uuenda.sh

Salvesta ära

Kontrolli crontab –l

Sertifikaatide info edasine kasutus

kui tahta, et server sertifikaatide andmed muutujatesse kannaks (et need oleks skriptides kasutatavad), võiks lisada .htaccess faili midagi sellist:

<Files ~ "\.(cgi|shtml|php)$">
 SSLOptions +StdEnvVars +ExportCertData
</Files>

Varundus ja taastamine

Varundamiseks kopeeri allolevates kataloogides asuvad failid alternatiivsele andmekandjale.

Failiõiguste säilitamiseks ja andmete tihendamiseks kasuta tar käsku.

Andmete asukohad

Veebide sisu: /var/www Veebi sales.firma sisu: /var/www/sales Apache2 konfiguratsioon: /etc/apache2 Veebiserveri logifailid: /var/log/apache2

Varundamise ja taastamise näited

Varundame kõik veebid juurkataloogis asuvasse faili veebid.tar.gz

sudo tar -cvvf /veebid.tar.gz /var/www/*

Taastame kõik veebid juurkataloogis olevast failist veebid.tar.gz endisesse asukohta:

sudo tar -xvvf /veebid.tar.gz

Mis saab edasi?