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