Multiples domaines avec Apache et Certbot

Palaiseau, le samedi 12 juin 2021

Cher Journal,

j'ai pris une concession pour dix ans sur le nom de domaine emlwks999.eu, via le registrar Gandi. L'idée est de ne plus dépendre du nommage d'appoint fourni gracieusement par la société Free, qui me fournit également mon accès à Internet ; non pas que je prévoie de changer de fournisseur dans l'immédiat, ou que j'ai quelque chose en particulier contre Free, mais rien n'empêche qu'à moyen ou long terme, je me retrouve dans une situation où je sois obligé de changer de fournisseur.

Outre un peu d'indépendance vis-à-vis de mon fournisseur d'accès à Internet pour la configuration de mon nom de domaine, j'ai désormais beaucoup plus de libertés pour configurer les accès à distance, à commencer par la possibilité de contacter ma machine en IPv6 ; les situations où je me mords les dents parce que je suis parti en oubliant de régler les tables NAT seront bien moins nombreuses désormais. Je peux également définir des champs MX pour pointer sur n'importe quel serveur de courriel, et potentiellement devenir indépendent de mon fournisseur. Mailo, qui héberge mon adresse mailoo.org, fournit la possibilité, via son paquetage Family, de rattacher des domaines personnalisés. Je pourrais également basculer vers Gandi, ou n'importe quel autre fournisseur prenant en charge les alias et domaines personnalisés, et ce sans changer d'adresse de courriel. Voir, je pourrais installer un serveur de mail directement sur mon poste, en admettant que je devienne un jour compétent sur ce sujet, qui est bien particulier.

Étant donné le nouveau nom de domain, j'ai du faire engendrer un nouveau certificat pour le HTTPS. Je sais que je dois passer par le Certbot, afin qu'il puisse contacter la maison mère Let's Encrypt pour la validation du certificat, mais la partie qui concerne l'intégration dans le serveur Apache a un peu explosé en vol quand je me suis laissé guider par la commande suivante :

$ sudo certbot --apache -d emlwks999.eu

La commande m'a produit le certificat pour emlwks999.eu, mais est entrée en conflit avec la configuration SSL du serveur Apache pour le domaine préexistant emlwks999.hd.free.fr. La solution était d'attribuer le bon certificat aux bonnes requêtes HTTPS, en fonction des demandes pour l'un ou l'autre domaine, dans la configuration du serveur web. Apache permet de faire ça bien ; comme toujours mon plus gros problème est de changer la configuration sans tout casser, comme je ne fais ce genre de manipulations que tous les trente-six du mois. Mes sauvegardes ont été d'une aide précieuse pour voir ce que le certbot a changé par rapport à la configuration d'origine. Les changements ont eu lieu dans le fichier /etc/apache2/sites-enabled/000-default-le-ssl.conf. Le certbot avait configuré un seul hôte virtuel avec un ServerName réglé sur le nom de domaine de Free, et ajouté un ServerAlias avec le nom de domaine en .eu. En fait, j'ai du bien séparer les deux domaines dans deux paragraphes VirtualHost bien distincts pour retomber sur mes pattes. Pour faire court, après avoir fait pas mal de ménage dans les commentaires, le fichier ressemble à :

<IfModule mod_ssl.c>

<VirtualHost *:443>
ServerAdmin etienne.mollier@mailoo.org
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName emlwks999.hd.free.fr
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/emlwks999.hd.free.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/emlwks999.hd.free.fr/privkey.pem
</VirtualHost>

<VirtualHost *:443>
ServerAdmin etienne.mollier@mailoo.org
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName emlwks999.eu
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/emlwks999.eu/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/emlwks999.eu/privkey.pem
</VirtualHost>

</IfModule>

C'est le ServerName qui fait foi, pour la sélection des bons certificats. Le ServerAlias, comme j'ai pu le voir précédemment, peut interférer, et donc n'apparait pas dans la configuration finale. J'imagine que c'est intéressant dans le cas où les certificats supportent les wildcards, mais il ne me semble pas que ce soit encouragé, ni même supporté, par Let's Encrypt. Je pense qu'il est aussi possible d'alléger un peu les directives en utilisant des Includes, mais du coup ça multiplierait les fichiers de configuration d'Apache, qui sont par ailleurs déjà bien nombreux. Il faudra que je garde un œil sur le rafraîchissement des deux certificats ; j'ai déjà des alertes calendar en place pour ça.

emlwks999 est désormais accessible via https://emlwks999.eu, et ce devrait devenir l'adresse de référence. C'est donc le moment de rafraîchir ses marques pages et flux RSS.  ;-)

[ICO]NameLast modifiedSize
[PARENTDIR]Parent Directory  -

  —