Mise en place de Webdav / SSL sur Debian

Testé sur Debian testing « Lenny »

Ce memo me sert pour configurer WebDAV avec cryptage SSL sur un serveur Apache. J’utilise WebDAV pour offrir un accès fichiers aux webmasters des sites que j’héberge, c’est plus souple et plus sûr que le FTP. Cette config est très basique, Webdav permet un paramétrage très fin des autorisations, notamment avec la directive <Limit …>

Une des contraintes de Webdav est que le serveur Apache doit avoir les droits en lecture-écriture sur tous les répertoires et fichiers partagés. Il faut donc veiller à ce que le user sous lequel s’exécute Apache (www-data dans mon cas) en reste propriétaire. C’est pourquoi les concepteurs de Webdav recommandent de ne pas utiliser d’autre protocole pour accéder à ces fichiers. C’est à mon humble avis un peu excessif, mais il faut y faire attention, un upload fait par SSH ou FTP n’aura probablement pas les bons droits.

Requis


Installer les modules Apache

a2enmod ssl<br />
a2enmod dav<br />
a2enmod dav_fs<br />
a2enmod dav_lock<br />
a2enmod rewrite<br />
/etc/init.d/apache2 force-reload

Générer le certificat SSL

Dans le répertoire /etc/ssl/private :

openssl req -nodes -new -keyout mondomaine.key -out mondomaine.csr

On peut passer toutes les questions sauf « Common Name (eg, YOUR name) », où il ne faut surtout pas mettre son nom mais le nom du domaine.
cat mondomaine.csr

Copier la sortie dans le presse-papier
Sur le site cacert.org aller sur Certificat de domaine / Nouveau
Demander un certificat de classe 3
Coller le csr
Récupérer le certificat dans le presse-papier et le coller dans /etc/ssl/private/mondomaine check my reference.crt

finir par :

chmod 600 mondomaine.*

Recopier le certificat racine CACert Classe 3 dans le magasin de certificats /etc/ssl/certs sous le nom cacert_class3.crt

Il est aussi possible d’utiliser un certificat autosigné, comme expliqué ici par exemple. L’avantage du certificat CACert est qu’il est issu d’une autorité certes non commerciale mais reconnue. Si le certificat racine de CACert n’est pas présent sur les postes clients on peut le télécharger ici

Configurer Apache

Attention, un seul serveur virtuel SSL par adresse IP!

Hors serveur virtuel, ajouter les directives :

NameVirtualHost *:80<br />
NameVirtualHost *:443<br />
DAVMinTimeout 600<br />
DAVDepthInfinity On

Dès qu’on a mis en place le SSL, il faut que tous les serveurs virtuels soient assignés à un port, 80 pour http ou 443 pour https.

ex :

&lt;VirtualHost *:80&gt;<br />
...<br />
&lt;/VirtualHost&gt;

Déclarer le serveur virtuel

On crée le fichier /etc/apache2/sites-availables/webdav :

&lt;VirtualHost *:80&gt;<br />
ServerName mondomaine<br />
# Force SSL<br />
RewriteEngine on<br />
RewriteCond %{HTTPS} !=on [NC]<br />
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]<br />
&lt;/VirtualHost&gt;<br />
&lt;VirtualHost *:443&gt;<br />
ServerName mondomaine<br />
ServerAdmin webmaster@mondomaine<br />
SSLEngine On<br />
SSLCACertificateFile /etc/ssl/certs/cacert_class3.crt<br />
SSLCertificateFile /etc/ssl/private/mondomaine.crt<br />
SSLCertificateKeyFile /etc/ssl/private/mondomaine.key<br />
DocumentRoot /var/www<br />
&lt;Directory /&gt;<br />
Options -Indexes FollowSymLinks<br />
AllowOverride none<br />
&lt;/Directory&gt;<br />
&lt;Directory /var/www/site1&gt;<br />
Options Indexes<br />
AllowOverride none<br />
Order allow,deny<br />
allow from all<br />
DAV on<br />
AuthName &quot;Administration site Site 1&quot;<br />
AuthType Basic<br />
AuthUserFile /etc/apache2/htpasswd-webdav<br />
&lt;Limit GET POST PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;<br />
Require user utilisateur1<br />
&lt;/Limit&gt;<br />
&lt;/Directory&gt;<br />
&lt;Directory /var/www/site2&gt;<br />
Options Indexes<br />
AllowOverride none<br />
Order allow,deny<br />
allow from all<br />
DAV on<br />
AuthName &quot;Administration site Site 2&quot;<br />
AuthType Basic<br />
AuthUserFile /etc/apache2/htpasswd-webdav<br />
&lt;Limit GET POST PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;<br />
Require user utilisateur2<br />
&lt;/Limit&gt;<br />
&lt;/Directory&gt;<br />
ErrorLog syslog<br />
LogLevel warn<br />
CustomLog /var/log/apache2/access_dav.log combined<br />
&lt;/VirtualHost&gt;

Créer la base utilisateurs

htpasswd -c /etc/apache2/htpasswd-webdav utilisateur1<br />
New password:<br />
Re-type new password:<br />
Adding password for user utilisateur1<br />
htpasswd /etc/apache2/htpasswd-webdav utilisateur2<br />
New password:<br />
Re-type new password:<br />
Adding password for user utilisateur2

Donner les droits d’accès à Apache

chown www-data /etc/apache2/htpasswd-webdav<br />
chmod 660 /etc/apache2/htpasswd-webdav

Configurer le firewall

Ouvrir le port TCP 443

Le moment de vérité!

on active le site :

a2ensite webdav<br />
/etc/init.d/apache2 reload

S’il n’y a pas d’erreur il ne reste plus qu’a tester le partage avec un client Webdav : Dossiers Web sous Windows, le kio webdavs:// avec Konqueror (attention webdav:// ne fonctionne pas en SSL), le client intégré à Mac OS X, etc…

Liens

Le site officiel webdav

No votes yet.
Please wait...

Laisser une réponse