Publié le 03/25/2018, rédigé par Gaulthier LALLEMAND

DAViCal

Configuration d'Apache.

Sommaire : Monter son propre service de calendrier

Etape précédente : Configuration de PostgreSQL

DAViCal est fourni avec un fichier de configuration pour Apache à cet endroit: /usr/share/davical/config/apache-davical.conf. Il ressemble à ceci.

Je copie ce fichier dans le répertoire d'Apache :

sudo cp /usr/share/davical/config/apache-davical.conf /etc/apache2/sites-available/davical.conf

Configuration sans SSL

Je l'adapte comme je veux, mais en fin de compte, le fichier davical.conf doit ressembler à ceci :

<VirtualHost *:80>
    ### NOM DE DOMAINE A ADAPTER ###
    ServerName davical.mondomaine.fr

    DocumentRoot /usr/share/davical/htdocs
    DirectoryIndex index.php index.html
    Alias /images/ /usr/share/davical/htdocs/images/
    Alias /davical /usr/share/davical/htdocs
    <Directory /usr/share/davical/htdocs>
        DirectoryIndex index.php
        AllowOverride None
        Require all granted
    </Directory>
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^/\.well-known/(.*)$ /davical/caldav.php/.well-known/$1 [NC,L]
        RewriteRule ^/principals/users/(.*)$ /davical/caldav.php/$1 [NC,L]
    </IfModule>
</VirtualHost>

J'enregistre le fichier, et j'active le site :

sudo a2ensite davical

Puis je recharge Apache :

sudo systemctl reload apache2

Je peux vérifier que la configuration d'Apache fonctionne en allant à l'URL suivante avec mon navigateur :

http://davical.mondomaine.fr

A ce stade, je peux choisir de passer à l'étape suivante, ou de changer ma configuration d'Apache pour y intégrer le SSL.

Configuration avec SSL

Pour des raisons évidentes de sécurité et de protection de la vie privée, je recommande vivement l'utilisation massive du SSL.

Etant donné que mon service DAViCal est destiné à être utilisé par des logiciels clients inconnus sur des appareils inconnus, il vaut mieux dans ce cas se procurer un certificat SSL signé par une autorité de certification. A ce titre, les articles traitant de l'autorité Let's Encrypt et du client Certbot sont disponibles sur cette université.

A noter : il sera nécessaire d'utiliser des hooks pour stopper le service Apache le temps du renouvellement du certificat (voir le dernier paragraphe de cet article).

Une fois le certificat SSL créé, il faut activer le module SSL pour apache :

sudo a2enmod ssl

Puis il faut modifier le fichier de configuration davical.conf :

sudo nano -c /etc/apache2/sites-available/davical.conf

Après avoir sauvegardé l'original, je peux remplacer son contenu par ce qui suit (en changeant le nom de domaine davical.mondomaine.fr à chaque fois que c'est nécessaire) :

<VirtualHost *:80>
    ServerName davical.mondomaine.fr
    Redirect permanent / https://davical.mondomaine.fr/
</VirtualHost>

<VirtualHost *:443>
    ServerName davical.mondomaine.fr

    DocumentRoot /usr/share/davical/htdocs
    DirectoryIndex index.php index.html
    Alias /images/ /usr/share/davical/htdocs/images/
    Alias /davical /usr/share/davical/htdocs

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^/\.well-known/(.*)$ /davical/caldav.php/.well-known/$1 [NC,L]
        RewriteRule ^/principals/users/(.*)$ /davical/caldav.php/$1 [NC,L]
    </IfModule>

    <Directory /usr/share/davical/htdocs>
        DirectoryIndex index.php
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride none
        Require all granted
    </Directory>

    SSLEngine on
    # J'adapte les PATH suivants pour qu'ils pointent vers les fichiers créés par Certbot :
    SSLCertificateFile    /etc/letsencrypt/live/MON_CERTIFICAT/fullchain.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/MON_CERTIFICAT/privkey.pem

    ErrorLog /var/log/apache2/error.davical.mondomaine.fr.log
    CustomLog /var/log/apache2/access.davical.mondomaine.fr.log combined
</VirtualHost>

Je m'assure que mon site est activé :

sudo a2ensite davical

Et enfin, je redémarre le service Apache :

sudo systemctl restart apache2

A ce stade, je peux vérifier que la configuration d'Apache fonctionne en allant à l'URL suivante avec mon navigateur :

https://davical.mondomaine.fr

A noter : il est normal de voir une erreur du type DAViCal Not Configured. Le fichier de configuration n'a pas encore été édité ...

J'ai inséré une directive dans le fichier de configuration qui permet de rediriger les utilisateurs sur des adresses utilisant le https :

Redirect permanent / https://davical.mondomaine.fr/

Pour vérifier que la redirection fonctionne, il suffit de se connecter sur l'URL suivante:

http://davical.mondomaine.fr

Le navigateur devrait être redirigé vers la même adresse en https.

Je ne me connecte pas tout de suite, il faut d'abord configurer DAViCal.

Désactiver la configuration par défaut

Toujours dans l'optique d'augmenter la sécurité, mais cette fois en diminuant la surface d'attaque, je recommande de désactiver les configurations de sites inutiles, et en particulier la configuration par défaut fournie par Apache :

sudo a2dissite 000-default
sudo systemctl reload apache2

Etape suivante : Configuration de DAViCal