Utiliser le protocol ACME avec Let’s Encrypt et un nom DNS DuckDNS
Prérequis
- Une VM qui peut aller sur Internet avec une adresse IP.
- Un serveur web Apache installé.
- Curl ou un navigateur web.
- Python
Création d’un nom de sous domaine dans DuckDNS
-
Rendez vous sur le side DuckDNS https://www.duckdns.org
-
Créer un compte et notez votre TOKEN.

-
Choisir un nom de sous domaine disponible

-
Mettre à jour l’IP dans le champs current ip et puis cliquer sur update ip
PS. cette ip est l’adresse IP de votre VM sur ECloud
Attention, pour y acceder il faut etre connecté au VPN

- A ce stade, on doit pouvoir lancer CertBot sur notre VM et puis certifier notre site.
CertBot pour certifier un nom de domaine
Dans la suite, on va utiliser CertBon pour certifier le nom de domaine pour notre site web Apache.
# 1. Connectez vous à la VM avec les identifiants définis à la création de cette VM.
ssh -l login IP
# 2. Installer Certbot (le client Let's Encrypt)
sudo apt install certbot python3-certbot-apache -y
# 3. Certification Let's Encrypt
# Commencez par ouvrir un autre terminal et connectez-vous à la VM.
# Executez les commandes suivantes dans le premier qui se trouve à gauche dans la caputre d'ecran
export URL_SITE="vm-ecloud-im2ag"
sudo certbot certonly --manual --preferred-challenges dns -d "$URL_SITE.duckdns.org"
# CertBot vous demandra une adresse mail et puis vous fournira un texte à copier dans une variable dans l'autre terminal.
# Executez les commandes suivantes dans le second terminal:
export URL_SITE="vm-ecloud-im2ag"
export TOKEN='Votre token'
export TXT="le challenge généré dans le premier terminal"
# Pour authentifier votre machine il suffit d'envoyer une requete HTTP à l'API de DuckDNS.
curl "https://www.duckdns.org/update?domains=$URL_SITE&token=$TOKEN&txt=$TXT"
# Il faut voir un OK
# Finalisez l'execution dans le premier terminal en tappant Entrée.

# 4. Modifier la config d'Apache pour y assicier les certificats créés.
sudo nano /etc/apache2/sites-available/default-ssl.conf
# Supprimer les lignes:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# Ajouter:
SSLCertificateFile /etc/letsencrypt/live/$URL_SITE.duckdns.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/$URL_SITE.duckdns.org/privkey.pem
# Sauvegardez ce fichier et fermez-le.
# Activer le HTTPS:
sudo a2enmod ssl # activer le module Apache mod_ssl qui permet de gérer les connexions HTTPS (TLS/SSL).
sudo a2ensite default-ssl.conf # activer la configuration par défaut fournie par Apache pour HTTPS.
sudo systemctl reload apache2 # Recharger la config d'Apache
# A ce stade on peut vérifier que tout est bon en allant sur https://IP_VM

# 5. Mise en place d’un script d’authentification pour DuckDNS dans une tâche automatisée crontab.
# Vous pouvez définir une tâche automatisée pour mettre à jour automatiquement votre IP et votre certificat.
# Connectez-vous à votre compte DuckDns et aller sur https://www.duckdns.org/install.jsp
# Choisissez votre nom de domaine et vous verrez apparaître les instructions qu'il faudra suivre.
Pour supprimer un déploiements, allez dans la page de vos déploiements.
Cliquez sur les trois points verticaux et puis choissiez Delete et puis Submit
⚠️ Important
Merci de bien supprimer tous les déploiements que vous avez créés à la fin de la séance afin d’éviter toute consommation inutile.