Les navigateurs et les moteurs de recherche attendent du HTTPS, et Let's Encrypt fournit des certificats gratuits. Sur un VPS Linux Infrawire sous AlmaLinux 9, Certbot peut obtenir le certificat, modifier la configuration d'Apache et le renouveler seul. Les mêmes étapes valent pour Rocky Linux 9.
📋 Prérequis
- Un VPS AlmaLinux 9 avec accès root ou sudo (IP et mot de passe dans votre espace client).
- Un nom de domaine,
example.com, dont l'enregistrement A (et AAAA pour l'IPv6) pointe versVPS_IP. Attendez d'abord la propagation DNS. - Apache (httpd) qui sert le site en HTTP sur le port 80.
1. Installer Apache et ouvrir le pare-feu
Si Apache n'est pas encore installé, installez-le et démarrez-le. Ouvrez ensuite HTTP et HTTPS dans firewalld ; le port 80 est indispensable à la validation Let's Encrypt.
Bashdnf install -y httpd systemctl enable --now httpd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services
2. Créer un hôte virtuel pour votre domaine
Certbot cherche un ServerName correspondant à votre domaine : créez donc un hôte virtuel dédié.
Bashmkdir -p /var/www/example.com/public_html echo "Hello" > /var/www/example.com/public_html/index.html
Créez /etc/httpd/conf.d/example.com.conf :
Apache1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5</VirtualHost>
Vérifiez la syntaxe puis rechargez :
Bashapachectl configtest systemctl reload httpd
3. Installer Certbot et mod_ssl
Certbot vient du dépôt EPEL. mod_ssl fournit le module TLS d'Apache et un certificat par défaut dont httpd a besoin pour écouter sur le port 443.
Bashdnf install -y epel-release dnf install -y certbot python3-certbot-apache mod_ssl
4. Demander le certificat
Lancez Certbot avec le plugin Apache. Il valide le domaine en HTTP, écrit un nouvel hôte virtuel *-le-ssl.conf et peut ajouter la redirection HTTP vers HTTPS.
Bashcertbot --apache -d example.com -d www.example.com
Saisissez une vraie adresse e-mail (utilisée pour les alertes d'expiration), acceptez les conditions et choisissez la redirection quand on vous le demande. Chaque nom passé avec -d doit pointer vers ce serveur, sinon la validation échoue.
Si SELinux est en mode enforcing (par défaut), rien de particulier n'est requis pour une installation standard. Ne le désactivez pas pour contourner une erreur.
5. Vérifier le renouvellement automatique
Les certificats Let's Encrypt durent 90 jours. Sur AlmaLinux 9, le paquet installe un timer systemd qui s'exécute deux fois par jour et ne renouvelle que les certificats proches de l'expiration.
Bashsystemctl list-timers | grep certbot systemctl status certbot-renew.timer
Si le timer n'apparaît pas, activez-le :
Bashsystemctl enable --now certbot-renew.timer
Simulez un renouvellement sans toucher au vrai certificat :
Bashcertbot renew --dry-run
La dernière ligne doit indiquer que tous les renouvellements simulés ont réussi. Apache est rechargé automatiquement après un vrai renouvellement.
Vérification
Bashcertbot certificates curl -I https://example.com curl -I http://example.com
La première commande liste les domaines et la date d'expiration. La requête HTTPS doit renvoyer 200 et la requête HTTP doit répondre par une 301 vers l'adresse HTTPS. Dans un navigateur, le cadenas doit montrer un certificat valide émis par Let's Encrypt. Pour voir toute la chaîne, lancez openssl s_client -connect example.com:443 -servername example.com.
Dépannage
- Échec du challenge ou délai dépassé pendant la validation : le DNS ne pointe pas encore vers le serveur ou le port 80 est bloqué. Vérifiez
dig +short example.com,firewall-cmd --list-serviceset tout pare-feu placé devant le VPS. - Certbot ne trouve pas d'hôte virtuel correspondant : le
ServerNameouServerAliasdans/etc/httpd/conf.d/ne correspond pas au domaine passé. Corrigez-le, lancezapachectl configtest, puis réessayez. Vous pouvez aussi utilisercertbot certonly --apacheet configurer les chemins vous-même. - Trop de certificats ou de validations échouées (limite de débit) : Let's Encrypt limite les tentatives répétées. Testez d'abord avec
certbot --apache --dry-runet attendez avant de réessayer. - Site inaccessible sur le port 443 après l'installation : HTTPS n'est pas ouvert dans firewalld ou httpd n'a pas été rechargé. Lancez
firewall-cmd --permanent --add-service=https,firewall-cmd --reloadetsystemctl restart httpd.
🔐 Votre site Apache sur AlmaLinux 9 sert désormais du HTTPS et renouvelle son certificat tout seul.