WebDAV

Obecný úvod:

Došel jsem k závěru, že totiž možnost sdílení kalendářů a možnost společného plánování
by byla ve firmě víc než užitečná.

Jako nejlepší variantu jsem vyhodnotil kalendář pro Mozillu dostupný zde nebo zde.
Vybral jsem si rozšíření do Mozilla Thunderbirdu, protože považuji za výhodné mít
v kalendáři zapnutá upozornění e-mailem, což – pokud vím v Sunbirdu zatím možné není.
Kalendář pro Thunderbird se však dá spouštět samostatně (i bez Thunderbirdu)
a funkce upozorňování e-mailem je přitom zachována (pokud je kalendář spuštěn).

Abych zozběhl sdílení kalendáře přes WebDAV, pokusil jsem se najít nějaký manuál.
Většinou jsem se dozvěděl, že je to velmi jednduché a to mne povzbudilo.
Brzy jsem však zjistil, že to zase tak jednoduché není, protože manuály jsou pro jiné
distribuce a po několika neúspěšných pokusech jsem musel začít řešit „nalehavější“ věci…

Během toho půl roku jsem se k WebDAVu několikrát asi tak na 10 minut vrátil,
abych zjistil, že už si nepamatuju co jsem posledně nastavil.
Po novém roce se siutace trochu uklidnila a tak jsem začal od začátku ;-).

Snažil jsem si ulehčit siutaci a zeptat se známých. Ani to nepomohlo.
WebDAV prý z důvodu zabezpečení přístupů ke sdílení vyhodnotili jako nepoužitelný.
Znovu jsem začal pátrat na webu a protože už jsem věděl,
že že kdo hledá ve spěchu nic nenajde tentokrát jsem tolik nespěchal a tak jsem našel.
WebDAV běží a protože to příště chci mít po ruce a také proto,
že by to mohlo někomu ušetřit práci, rozhodl sem se to „pověsit“ sem.

a) Ověříme si, zda máme nainstalované potřebné balíčky

U Red Hatu 9 balíček Apache (httpd-2.0x) už obsahuje apache WebDAV moduly.
Nejprve si ověříme, že máme balíček httpd-2.0 instalován:

# rpm -qa | grep httpd httpd-2.0.40-21.5 

A že httpd-2.0 poskytuje mod_dav:

# rpm -q --provides httpd | grep dav mod_dav.so mod_dav_fs.so

Defaultní konfigurační soubor Apache (v Red Hatu /etc/httpd/conf/httpd.conf
již obsahuje instrukce podporující WebDav.

Při problémech je možné porovnat obsah vašeho httpd.conf s tímto odkazem

Jako základní autentifikační metodu použijeme autentifikaci s použitím SSL.
Proto si ověříme, že máme nainstalovány openssl a mod_ssl:

# rpm -qa | grep -i ssl openssl096b-0.9.6b-12 openssl-devel-0.9.7a-20 openssl095a-0.9.5a-19 perl-Crypt-SSLeay-0.45-7 pyOpenSSL-0.5.1-8 docbook-style-dsssl-1.76-8 openssl-0.9.7a-20 openssl096-0.9.6-23.9 openssl-perl-0.9.7a-20 mod_ssl-2.0.40-21.5

b) Nastavení SSL- vytvoření certifikátu

Pokud ještě na našem serveru není na nakonfigurováno SSL, vytvoříme SSL
certifikát pro náš počítač. Red Hat obsahuje soubor make, který tento proces usnadní.

Jdeme do adresáře, který obsahuje soubor make a vytvoříme certifikát
a key soubor (.pem) pro náš počítač. Pojmenujeme ho jako [něco].pem:

# cd /etc/httpd/conf # make www.myhost.org.pem umask 77 ; \ PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ /usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 ; \ cat $PEM1 > www.myhost.org.pem ; \ echo "" >> www.myhost.org.pem ; \ cat $PEM2 >> www.myhost.org.pem ; \ rm -f $PEM1 $PEM2 Generating a 1024 bit RSA private key ...........................................++++++ ...........++++++ writing new private key to '/tmp/openssl.c7ucXb' -----

Budeme požádáni o vložení informací, které budou začleněny do našeho certifikátu (požadavku).

Některé řádky můžeme ponechat prázdné. V některých polích budou defaultní hodnoty.
Pokud stiskneme „enter ‚.‘, pole zůstanou prázdná.

Country Name (2 letter code) [GB]:CZ State or Province Name (full name) [Berkshire]:Liberecký Locality Name (eg, city) [Newbury]:Liberec Organization Name (eg, company) [My Company Ltd]:firma Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:www.myhost.org/ Email Address []:   

Nyní přesuneme certifikát do adresáře pro certifikáty:

# mv /etc/httpd/conf/www.myhost.org.pem /etc/httpd/conf/ssl.crt/

To napovídá umístění certifikátu v v konfiguračním souboru Apache – SSL:

/etc/httpd/conf.d/ssl.conf.

Pokud nepotřebujeme defaultní příkazy pro SSLCertificateFile a SSLCertificateKeyFile,
tak je zakomentujeme křížkem # na začátku těchto řádků.
Pak vložíme SSLCertificate File směrnici, která odkazuje na náš nový certifikát:

SSLCertificateFile /etc/httpd/conf/ssl.crt/www.myhost.org.pem

SSLCertificateKeyFile směrnice není nezbytná, protože klíč je obsažen v cert .pem souborech.

Spusťíme nebo restartujeme apache:

# service httpd start

Jestliže služba nenaběhne, najdeme příčinu v logu /var/log/httpd/.

Předpokládejme, že apache nastartoval. Pro přístup použijme webový prohlížeč:

https://www.myhost.org/

Protože používáme certifikát, který jsme si sami podepsali
pravděpodobně obdržíme varování o neznámé autoritě.
To je v pořádku.

c) Vytvoření WebDAV adresáře

Musíme vytvořit adresář, kam bude apache ukládat soubory přesWebDAV
(každý uživatel bude mít podadresář v tomto adresáři).
Webdav adresář musí patřit do účtu služby apache.
V Red Hat je tato služba pravděpodobně „apache“.
Jestliže apache běží, můžete zjistit jeho účet v seznamu běžících procesů:

# ps axu | grep httpd root 1262 0.0 0.0 81048 884 ? S Jan06 0:42 /usr/sbin/httpd – apache 26102 0.0 0.2 82524 2380 ? S Jan29 0:00 /usr/sbin/httpd – apache 26103 0.0 0.2 82528 2392 ? S Jan29 0:00 /usr/sbin/httpd – apache 26104 0.0 0.2 82528 2896 ? S Jan29 0:00 /usr/sbin/httpd – apache 26105 0.0 0.2 82528 2400 ? S Jan29 0:00 /usr/sbin/httpd – apache 26106 0.0 0.2 82528 2432 ? S Jan29 0:00 /usr/sbin/httpd – apache 26107 0.0 0.2 82524 2372 ? S Jan29 0:00 /usr/sbin/httpd – apache 26108 0.0 0.2 82524 2424 ? S Jan29 0:00 /usr/sbin/httpd – apache 26109 0.0 0.2 82524 2404 ? S Jan29 0:00 /usr/sbin/httpd – root 32025 0.0 0.0 1740 596 pts/0 S 03:26 0:00 grep httpd

Nebo můžete zkontrolovat výpis pro „User“ a „Group“
v konfiguračním souboru Apache (zde jen výběr):

# grep „User “ /etc/httpd/conf/httpd.conf | grep -v ^
# User apache
# grep „Group “ /etc/httpd/conf/httpd.conf | grep -v ^
# Group apache

My použijeme pro WebDAV adresář /var/www/webdav

# mkdir /var/www/webdav

Ten je vně adresáře /var/www/html, který Apache používá pro své dokumenty
(např. webové stránky). Později vytvoříme instrukci (Alias) v souboru ssl.conf,
kterou řekneme apachi, kde webdav nalezne.

Nyní změníme vlastnictví a učiníme webdav adresář čitelný pro účet služby apache:

# chown root:apache /var/www/webdav # chmod 750 /var/www/webdav 

a v tomto adresáři vytvoříme podadresáře pro jednotlivé uživatele.

d) Ověřování uživatelů

Autentifikace Je několik způsobů jak může Apache ověrovat uživatele.
My budeme používat příkaz httpasswd pro vytvoření souboru pro autentifikaci uživatelů,
terý se jmenuje passwd.dav. Vytvoříme místo pro umístění souboru passwd.dav
a nastavíme mu práva tak, aby ho mozla číst pouze služba apache:

# mkdir /etc/httpd/passwd # chown root:apache /etc/httpd/passwd # chmod 750 /etc/httpd/passwd 

Nyní použijeme příkaz htpasswd pro vytvoření souboru a vložení prvního uživatele:

# htpasswd -c /etc/httpd/passwd/passwd.dav franta New password:  Re-type new password:  Adding password for user franta  

POZOR!Volba -c se používá pouze poprvé pro vytvoření souboru passwd.dav.
Pokud použijeme volbu -c znovu, přepíšeme tak bez varování soubor passwd.dav
(a tím ztratíme každé zatím vytvořené heslo)
.

Teď nastavíme vlastnictví a práva tak, že pouze apache může tento soubor číst:

# chown root:apache /etc/httpd/passwd/passwd.dav # chmod 640 /etc/httpd/passwd/passwd.dav

e) Uživatelské adresáře

Vytvoříme adresář pro uživatele frantu pro ukládání jeho dat přes webdav:

# mkdir /var/www/webdav/franta

a změníme vlastnictví a práva tohoto adresáře tak,
aby do něj bylo možné přistupovat jen přes apache:

# chown apache:apache /var/www/webdav/franta # chmod 750 /var/www/webdav/franta  

POZOR: mod_dav předpokládá, že bude mít exkluzivní přístup k souborům
pouze přes WebDAV; povolování přístupů pro úpravy těchto souborů ostatními
se nedoporučuje.
Více zde.

f) Nastavení oprávnění ke vstupu do adresáře WebDAV pro uživatele

V konfiguračním SSL souboru Apache /etc/httpd/conf.d/ssl.conf vložíme někam
mezi [VirtualHost _default_:443] a [/VirtualHost] následující:

Alias /webdav/ "/var/www/webdav/"    DAV on  AuthType Basic  AuthName "WebDAV Storage"  AuthUserFile /etc/httpd/passwd/passwd.dav  

Příkaz Alias říká Apachi, kde má hledat pro požadavky pro /webdav/

Příkaz DAV on Zapíná WebDAV pro adresář (a jeho podadresáře).

Příkaz Auth* specifikuje, že přístup pro přístup kohokoli do adresáře
webdav bude použita základní autentifikace za použití souboru hesel,
který jsme vytvořili dříve.

Pod něj vložíme směrnice pro každý WebDAV uživatelský adresář:

  require user franta    

Nyní editaci uložíme, ukončíme náš editor a restartujte apache:

# service httpd restart
Pokud se start nepovede, podíváme se do logu ;-).

g) Test autentifikace přes SSL

Vytvoříme testovací soubor ve WebDAV uživatelském adresáři
a změníme vlastníka a práva pro apache:

# echo 'hello world!' > /var/www/webdav/franta/test.txt # chown apache:apache /var/www/webdav/franta/test.txt # chmod 640 /var/www/webdav/franta/test.txt

Zkusíme otevřít testovací soubor ve webovém prohlížeči bez použití SSL:

http://www.myhost.org/webdav/franta/test.txt

Obdržíme chybové hlášení 404 (objekt není nalezen).

Pokud tomu tak není, může to být způsobeno např. tím,
že adresář webdav je umístěn někde uvnitř kořenového adresáře
pro dokumenty apache – tj. např: /var/www/html/webdav).

Nyní zkusíme přístup k testouvacímu souboru za použití SSL:

https://www.myhost.org/webdav/franta/test.txt

Můžeme obdržet certifikační varování.
Po jeho akceptování se objeví přihlašovací dialog.
Zadáme přihlašovací informace tak, jak jsme je vytvořili dříve.

Pokud máme vše správně, uvidíme ve svém prohlížeči toto:

hello world!

V tomto bodě Máme WebDAV připraven k ukládání dat.
Pro to je třeba nějaký webdav klient jako je např. Mozilla Calendar.