Certificat SSL gratuit pour votre site : héberger un site avec Nginx et Let's Encrypt (Certbot) sous Linux
Tout site public devrait être servi en HTTPS, et un certificat SSL gratuit Let's Encrypt rend la chose simple. Ce guide montre comment héberger un site sur un serveur cloud ou dédié JUSTG avec Nginx, émettre un certificat Let's Encrypt avec certbot, vérifier le renouvellement automatique et forcer le HTTPS. Les commandes sont données pour Debian/Ubuntu et pour CentOS/Rocky Linux/AlmaLinux. Le domaine d'exemple est example.com et l'IP du serveur 203.0.113.10 ; remplacez-les par les vôtres.
Étape 1 : Pointer le domaine vers votre serveur JUSTG (enregistrements A et AAAA)
Chez votre registraire ou votre fournisseur DNS, créez un enregistrement A pour le domaine nu et pour www vers l'IPv4 du serveur. Les serveurs cloud JUSTG incluent aussi l'IPv6 gratuitement ; n'ajoutez un enregistrement AAAA que si l'IPv6 est configurée sur le serveur et que Nginx l'écoute. Attendez que les enregistrements soient résolus avant de demander un certificat, car Let's Encrypt valide le domaine depuis Internet.
# A example.com -> 203.0.113.10
# A www.example.com -> 203.0.113.10
# AAAA example.com -> 2001:db8::10 (optional, only if IPv6 is configured)
# check from the server (Debian/Ubuntu: apt install -y dnsutils, Rocky: dnf install -y bind-utils)
dig +short example.com A
dig +short www.example.com A
dig +short example.com AAAAÉtape 2 : Installer Nginx et certbot sous Debian ou Ubuntu
Le plugin Nginx de certbot peut modifier la configuration Nginx à votre place. Installez le tout depuis les dépôts standards :
apt update
apt install -y nginx certbot python3-certbot-nginx
systemctl enable --now nginx
ufw allow 'Nginx Full' # if UFW is enabledÉtape 3 : Installer Nginx et certbot sous Rocky Linux, AlmaLinux ou CentOS
Sur les systèmes dérivés de RHEL, certbot provient du dépôt EPEL. Ouvrez aussi HTTP et HTTPS dans firewalld :
dnf install -y epel-release
dnf install -y nginx certbot python3-certbot-nginx
systemctl enable --now nginx
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reloadÉtape 4 : Créer le site et son bloc server Nginx
Créez une racine de document avec une page de test. Sur les systèmes avec SELinux, restorecon garantit que Nginx peut lire les fichiers.
mkdir -p /var/www/example.com
echo '<h1>example.com is online</h1>' > /var/www/example.com/index.html
restorecon -Rv /var/www/example.com # Rocky/Alma/CentOS with SELinux onlyAjoutez ensuite un bloc server pour le domaine :
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Enregistrez-le à l'emplacement prévu par votre distribution, testez la syntaxe et rechargez Nginx :
# Debian / Ubuntu: save as /etc/nginx/sites-available/example.com, then
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
# CentOS / Rocky / AlmaLinux: save as /etc/nginx/conf.d/example.com.conf
nginx -t && systemctl reload nginx
curl -I http://example.comSi curl -I renvoie 200 OK, le site répond en HTTP et vous pouvez passer au certificat.
Étape 5 : Obtenir un certificat SSL Let's Encrypt gratuit avec certbot --nginx
Lancez certbot avec tous les noms de domaine que le certificat doit couvrir. Au premier lancement, il demande une adresse e-mail pour les avis d'expiration et l'acceptation des conditions de Let's Encrypt. L'option --redirect ajoute une redirection automatique de HTTP vers HTTPS.
certbot --nginx -d example.com -d www.example.com --redirectcertbot prouve le contrôle du domaine grâce à un fichier temporaire servi par Nginx, installe le certificat dans votre bloc server et recharge Nginx.
Étape 6 : Vérifier le renouvellement automatique
Les certificats Let's Encrypt ont une courte durée de validité, le renouvellement doit donc être automatique. Un essai à blanc teste tout le processus sans toucher au vrai certificat :
certbot renew --dry-run
# Debian / Ubuntu: the timer is enabled by the package
systemctl list-timers | grep certbot
# Rocky / AlmaLinux (EPEL): enable the renewal timer once
systemctl enable --now certbot-renew.timerSi l'essai réussit et que le minuteur est actif, rien d'autre n'est nécessaire.
Étape 7 : Forcer le HTTPS et vérifier le résultat
Si vous n'avez pas utilisé --redirect, forcez le HTTPS vous-même en remplaçant le bloc du port 80 par une redirection, tout en conservant le bloc HTTPS créé par certbot :
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}Rechargez Nginx et vérifiez :
curl -I http://example.com # expect 301 to https://
curl -I https://example.com # expect 200
certbot certificatesAlternative : SSL en un clic dans aaPanel
Si votre serveur utilise aaPanel, vous pouvez éviter les étapes manuelles. Ajoutez le site dans Website, ouvrez ses réglages, allez dans la section SSL, choisissez Let's Encrypt, sélectionnez les noms de domaine et validez. Activez ensuite l'option Force HTTPS. aaPanel renouvelle le certificat automatiquement. Les enregistrements DNS de l'étape 1 restent indispensables.
Questions fréquentes
certbot échoue avec une erreur de connexion ou un délai dépassé. Que vérifier ?
Assurez-vous que les enregistrements A et AAAA pointent vers ce serveur, que les ports 80 et 443 sont ouverts dans UFW ou firewalld et que Nginx tourne. Un enregistrement AAAA erroné est une cause fréquente, car la validation peut passer par l'IPv6.
Un seul certificat peut-il couvrir plusieurs domaines ?
Oui. Ajoutez d'autres options -d à la commande certbot ; chaque nom doit pointer vers le serveur.
Faut-il redémarrer Nginx après un renouvellement ?
Non. Le plugin Nginx de certbot recharge Nginx automatiquement après un renouvellement réussi.
Si le problème persiste, ouvrez un ticket pour contacter le support technique JUSTG.