9 mai 2021
Maintenant récupérons les certificats de chiffrement. Nous utiliserons les services de Let’s Encrypt avec Certbot.
Tout d’abord, de quels certificats avons-nous besoin ? Ouvrons les logs. Une recherche sur "check_domain_certfiles" et "poivron" nous donne ces lignes :
... No certificate found matching xmpp.poivron-robotique.fr
... No certificate found matching conference.xmpp.poivron-robotique.fr
... No certificate found matching pubsub.xmpp.poivron-robotique.fr
Pour utiliser Certbot, nous devons rediriger les connexions sur le port 80 de ces domaines vers le Raspberry Pi. Retournons dans l’administration de notre DNS et créons les enregistrements pour rediriger les domaines conference.xmpp.poivron-robotique.fr et pubsub.xmpp.poivron-robotique.fr vers notre routeur :
conference.xmpp.poivron-robotique.fr 900 A 176.190.83.229
pubsub.xmpp.poivron-robotique.fr 900 A 176.190.83.229
Sur le routeur, dirigez le port 80 vers le Raspberry Pi (sur le même port).
Sur le Rapsberry Pi, en administrateur, installez Certbot :
apt install cerbot
Lancez Certbot
certbot certonly --standalone
– Entrez votre email ;
– Acceptez les conditions d’utilisation (après les avoir lues) ;
– Choisissez si vous souhaitez partager votre email avec l’EFF (c’est eux qui fournissent ces certificats gratuitement) ;
– Entrez la liste des domaines pour lesquels vous voulez des certificats, séparés par des espaces ou des virgules.
Si vous rencontrez des soucis, modifiez votre configuration puis relancez Certbot uniquement sur les domaines problématiques avec la commande suivante :
certbot certonly --standalone --expand
Lancez un test de renouvellement de certificat pour vous assurer que tous vos domaines sont pris en compte.
certbot renew --dry-run
Attention, un seul fichier peut contenir les clés de plusieurs domaines, comme indiqué ici :
Simulating renewal of an existing certificate for conference.xmpp.poivron-robotique.fr and pubsub.xmpp.poivron-robotique.fr
Modifiez ejabberd.yml pour ajouter les certificats générés :
certfiles:
- "/etc/ejabberd/ejabberd.pem"
- /etc/letsencrypt/live/*/fullchain.pem
- /etc/letsencrypt/live/*/privkey.pem
Donnez les droits à ejabberd de lire ces certificats.
chmod -R g+xr /etc/letsencrypt/
chgrp -R ejabberd /etc/letsencrypt/live/
chgrp -R ejabberd /etc/letsencrypt/archive/
Rechargez la configuration du serveur en surveillant les logs. Vous pouvez le faire ainsi :
tail -f /var/log/ejabberd/ejabberd.log & ejabberdctl reload_config
Faites CTRL+C pour arrêter d’afficher les logs. En attendant vous pouvez continuer de taper des commandes.
Vous ne devriez plus voir apparaître de ligne du type :
No certificate found matching pubsub.xmpp.poivron-robotique.fr
Utilisez un client où vous n’avez pas désactivé le contrôle des certificats (ou Dino sous Linux) et essayez de vous connecter. Si ça marche, vous commencez à avoir quelque chose de vraiment fonctionnel !