Browser und Suchmaschinen erwarten HTTPS, und Let's Encrypt stellt Zertifikate kostenlos aus. Auf einem VPS Linux Infrawire mit AlmaLinux 9 kann Certbot das Zertifikat holen, die Apache-Konfiguration anpassen und es selbstständig erneuern. Dieselben Schritte gelten für Rocky Linux 9.
📋 Voraussetzungen
- Ein AlmaLinux-9-VPS mit Root- oder sudo-Zugriff (IP und Passwort in Ihrem Kundenbereich).
- Eine Domain
example.com, deren A-Eintrag (und AAAA für IPv6) aufVPS_IPzeigt. Warten Sie zuerst die DNS-Verbreitung ab. - Apache (httpd), der die Website per HTTP auf Port 80 ausliefert.
1. Apache installieren und Firewall öffnen
Ist Apache noch nicht installiert, installieren und starten Sie ihn. Öffnen Sie dann HTTP und HTTPS in firewalld; Port 80 ist für die Let's-Encrypt-Validierung erforderlich.
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. Virtual Host für Ihre Domain anlegen
Certbot sucht einen ServerName, der zu Ihrer Domain passt, legen Sie also einen eigenen Virtual Host an.
Bashmkdir -p /var/www/example.com/public_html echo "Hello" > /var/www/example.com/public_html/index.html
Erstellen Sie /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>
Prüfen Sie die Syntax und laden Sie neu:
Bashapachectl configtest systemctl reload httpd
3. Certbot und mod_ssl installieren
Certbot stammt aus dem EPEL-Repository. mod_ssl liefert das Apache-TLS-Modul und ein Standardzertifikat, das httpd braucht, um auf Port 443 zu lauschen.
Bashdnf install -y epel-release dnf install -y certbot python3-certbot-apache mod_ssl
4. Zertifikat anfordern
Starten Sie Certbot mit dem Apache-Plugin. Es validiert die Domain über HTTP, schreibt einen neuen Virtual Host *-le-ssl.conf und kann die Weiterleitung von HTTP auf HTTPS ergänzen.
Bashcertbot --apache -d example.com -d www.example.com
Geben Sie eine echte E-Mail-Adresse an (für Ablaufwarnungen), akzeptieren Sie die Bedingungen und wählen Sie auf Nachfrage die Weiterleitung. Jeder mit -d übergebene Name muss auf diesen Server zeigen, sonst scheitert die Validierung.
Ist SELinux im Modus enforcing (Standard), ist für ein normales Setup nichts Besonderes nötig. Deaktivieren Sie es nicht, um einen Fehler zu umgehen.
5. Automatische Erneuerung prüfen
Let's-Encrypt-Zertifikate gelten 90 Tage. Unter AlmaLinux 9 installiert das Paket einen systemd-Timer, der zweimal täglich läuft und nur Zertifikate erneuert, die bald ablaufen.
Bashsystemctl list-timers | grep certbot systemctl status certbot-renew.timer
Ist der Timer nicht aufgelistet, aktivieren Sie ihn:
Bashsystemctl enable --now certbot-renew.timer
Simulieren Sie eine Erneuerung, ohne das echte Zertifikat anzutasten:
Bashcertbot renew --dry-run
Die letzte Zeile sollte melden, dass alle simulierten Erneuerungen erfolgreich waren. Nach einer echten Erneuerung wird Apache automatisch neu geladen.
Überprüfung
Bashcertbot certificates curl -I https://example.com curl -I http://example.com
Der erste Befehl listet die Domains und das Ablaufdatum. Die HTTPS-Anfrage muss 200 liefern, die HTTP-Anfrage sollte mit 301 auf die HTTPS-Adresse antworten. Im Browser muss das Schloss ein gültiges, von Let's Encrypt ausgestelltes Zertifikat zeigen. Die ganze Kette sehen Sie mit openssl s_client -connect example.com:443 -servername example.com.
Fehlerbehebung
- Challenge fehlgeschlagen oder Zeitüberschreitung bei der Validierung: Das DNS zeigt noch nicht auf den Server oder Port 80 ist blockiert. Prüfen Sie
dig +short example.com,firewall-cmd --list-servicesund jede Firewall vor dem VPS. - Certbot findet keinen passenden Virtual Host:
ServerNameoderServerAliasin/etc/httpd/conf.d/stimmt nicht mit der übergebenen Domain überein. Korrigieren Sie das, führen Sieapachectl configtestaus und versuchen Sie es erneut. Alternativ nutzen Siecertbot certonly --apacheund konfigurieren die Pfade selbst. - Zu viele Zertifikate oder fehlgeschlagene Validierungen (Rate Limit): Let's Encrypt begrenzt wiederholte Versuche. Testen Sie zuerst mit
certbot --apache --dry-runund warten Sie vor einem neuen Versuch. - Seite nach der Installation auf Port 443 nicht erreichbar: HTTPS ist in firewalld nicht geöffnet oder httpd wurde nicht neu geladen. Führen Sie
firewall-cmd --permanent --add-service=https,firewall-cmd --reloadundsystemctl restart httpdaus.
🔐 Ihre Apache-Seite unter AlmaLinux 9 liefert jetzt HTTPS aus und erneuert ihr Zertifikat selbstständig.