Guide technique — Certificat SSL/TLS

HTTPS gratuit
avec Certbot

Certbot & Let's Encrypt — obtention et renouvellement automatique de certificats SSL/TLS pour sécuriser vos services web avec Nginx.

Auteur
EHAVOX
Mise à jour
2025
Compatible
Nginx / Apache
Sommaire
01

Installation de Certbot

Certbot est l'outil officiel de l'EFF pour obtenir et renouveler automatiquement des certificats Let's Encrypt — une autorité de certification gratuite et reconnue par tous les navigateurs.

Installez Certbot avec le plugin Nginx sur Debian / Ubuntu :

bash
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
Info
Pour Apache, remplacez python3-certbot-nginx par python3-certbot-apache. Le reste du guide reste identique en remplaçant le flag --nginx par --apache.

Prérequis avant de demander un certificat :

01
Nom de domaine valide
Vous devez posséder un nom de domaine pointant vers l'IP publique de votre serveur. Let's Encrypt ne délivre pas de certificats pour des IPs directes.
02
Port 80 ouvert et accessible
Certbot doit pouvoir répondre au challenge HTTP de Let's Encrypt sur le port 80. Assurez-vous que Nginx écoute sur ce port et que votre pare-feu le laisse passer.
03
Nginx correctement configuré
Le server_name dans votre VirtualHost Nginx doit correspondre exactement au domaine pour lequel vous demandez le certificat.
02

Obtention du certificat SSL

Certbot détecte automatiquement votre configuration Nginx, demande le certificat auprès de Let's Encrypt et met à jour votre configuration pour activer HTTPS :

bash
sudo certbot --nginx

Certbot vous guidera de manière interactive :

  • Adresse e-mail — utilisée pour les alertes d'expiration et les notifications de sécurité urgentes.
  • Acceptation des CGU — conditions d'utilisation de Let's Encrypt.
  • Choix du domaine — Certbot détecte automatiquement les server_name de vos VirtualHosts Nginx.
  • Redirection HTTP → HTTPS — il est fortement recommandé d'accepter la redirection automatique.

Pour spécifier le domaine directement sans interaction :

bash
sudo certbot --nginx -d monsite.fr -d www.monsite.fr
Attention
Let's Encrypt applique une limite de 5 certificats par domaine par semaine. En cas de test, utilisez le flag --staging pour éviter d'atteindre cette limite.
03

Vérification & renouvellement

Lister tous les certificats installés et leurs dates d'expiration :

bash
sudo certbot certificates

Simuler le renouvellement sans appliquer de changements (à faire avant toute intervention) :

bash
sudo certbot renew --dry-run
Astuce
Le renouvellement automatique s'effectue deux fois par jour via un timer systemd (ou un cron selon votre installation). Les certificats sont renouvelés lorsqu'il reste moins de 30 jours avant expiration. Vérifiez son statut avec :

sudo systemctl status certbot.timer
04

Commandes utiles

bash
# Forcer le renouvellement immédiat (même si non expiré)
sudo certbot renew --force-renewal

# Renouveler uniquement un domaine spécifique
sudo certbot renew --cert-name monsite.fr

# Révoquer un certificat
sudo certbot revoke --cert-path /etc/letsencrypt/live/monsite.fr/cert.pem

# Supprimer un certificat et sa configuration
sudo certbot delete --cert-name monsite.fr

Les certificats générés sont stockés dans :

path
/etc/letsencrypt/live/monsite.fr/
  ├── cert.pem       # Certificat du domaine
  ├── chain.pem      # Chaîne intermédiaire
  ├── fullchain.pem  # Certificat + chaîne (utilisé par Nginx)
  └── privkey.pem    # Clé privée (ne jamais partager)
05

Bonnes pratiques

  • Renouvellement automatique — ne désactivez jamais le timer systemd de Certbot. Les certificats Let's Encrypt expirent après 90 jours ; sans renouvellement, votre site affiche une erreur SSL à vos visiteurs.
  • Tester avec --staging — utilisez l'environnement de staging de Let's Encrypt lors des tests pour éviter la limite de taux (certbot --nginx --staging).
  • Inclure www et non-www — demandez toujours le certificat pour les deux variantes avec -d monsite.fr -d www.monsite.fr pour couvrir toutes les URLs.
  • Ne pas exposer la clé privée — le fichier privkey.pem ne doit jamais être accessible publiquement ni être versionné dans un dépôt Git.
  • Combiner avec Nginx — consultez le guide Nginx pour configurer la redirection HTTP → HTTPS et optimiser la configuration TLS de votre reverse proxy.
Astuce
Vérifiez la qualité de votre configuration SSL avec SSL Labs — un outil gratuit qui analyse votre certificat et votre configuration TLS et attribue une note de A à F.