Générer un certificat letsencrypt pour une VM

Il est possible d'utiliser un véritable certificat pour vos services hébergés dans une VM de la plateforme.

Pour commencer vous devez créer une zone DNS sur la plateforme. Il est ensuite indispensable de créer un enregistrement de type CAA pour que Let's Encrypt accepte de generer un certificat avec un challenge DNS.

On va maintenant créer un enregistrement (Record Set) CAA. Il vous suffit de cliquer sur le bouton Create Record Set puis de remplir le formulaire:

Demander le certificat

Il est nécessaire d'installer letsencrypt dans la VM ou sur votre machine (il faudra déplacer le certificat et la clé sur la VM). Vous pouvez suivre la procédure d'installation suivante ou utiliser votre gestionnaire de paquets ou snap.

La seule solution pour demander un certificat est de réaliser un challenge DNS. Pour automatiser le déploiement, nous allons utiliser un script qui configura automatiquement le DNS de la plateforme Openstack. Il faut donc se préparer à utiliser la CLI Openstack. Quand vous avez installé letsencrypt et "sourcé" votre openrc, vous pouvez utiliser les commandes suivantes:

wget https://documentation.univ-lyon1.fr/public/letsencrypt-designate
chmod a+x $(pwd)/letsencrypt-designate
Puis taper la commande en adaptant l'adresse e-mail (option -m) et bien évidemment le nom du domaine demandé (option -d):
certbot certonly -n --manual --preferred-challenges=dns --agree-tos --manual-auth-hook $(pwd)/letsencrypt-designate -m unedemo@univ-lyon1.fr -d demoencrypt.doc.os.univ-lyon1.fr
Envie de tester?
Vous pouvez ajouter --test-cert à votre commande pour utiliser un serveur de test avec des limitations plus souples.
Attention:
Un certificat émis par le serveur staging ne sera pas reconnu par les navigateurs.
Si tout fonctionne vous devriez avoir une sortie de ce type:
dns-01 challenge for demoencrypt.doc.os.univ-lyon1.fr
Running manual-auth-hook command: /home/demo/letsencrypt-designate
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/demoencrypt.doc.os.univ-lyon1.fr/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/demoencrypt.doc.os.univ-lyon1.fr/privkey.pem
Your cert will expire on 2022-12-22. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
Les informations importantes sont: