Webserver mit HTTPS einrichten
nginx mit Let's Encrypt oder Caddy mit automatischem HTTPS, dazu Domain und Firewall.
6 Min. Lesezeit
Auf dieser Seite
Diese Anleitung bringt eine Website mit gültigem Zertifikat auf deinen vServer. Du wählst einen von zwei Webservern:
- nginx mit certbot für das Let's-Encrypt-Zertifikat. Verbreitet, viele Anleitungen im Netz.
- Caddy. Holt und erneuert das Zertifikat selbst, die Konfiguration ist kürzer.
Gilt für Debian 12 und 13, Ubuntu 22.04 und 24.04, AlmaLinux 9 und Rocky Linux 9. Alle Befehle laufen als root. Wie du dich anmeldest, steht in Per SSH verbinden. Als Beispiel nehmen wir die Domain example.de; setz überall deine eigene ein.
Domain auf den vServer zeigen lassen
Let's Encrypt prüft, ob die Domain wirklich auf deinen Server zeigt. Das muss also zuerst stimmen.
- Such im Dashboard unter Netzwerk die IPv4- und IPv6-Adresse deines vServers heraus.
- Leg bei deiner Domain einen A-Eintrag auf die IPv4 und einen AAAA-Eintrag auf die IPv6 an, für
example.deund, wenn du sie brauchst, fürwww.example.de. Wie das bei einer CitexNode-Domain geht, steht in DNS-Einträge verwalten. - Prüf auf dem Server, ob die Einträge schon ankommen:
getent ahosts example.deStehen dort deine Adressen, geht es weiter. Neue Einträge brauchen manchmal ein paar Minuten.
Firewall: Ports 80 und 443 öffnen
Port 80 braucht Let's Encrypt für die Prüfung, Port 443 ist HTTPS. Nutzt dein System eine Firewall, öffne beide. Wie du eine Firewall einrichtest, steht in Firewall einrichten.
Debian und Ubuntu mit ufw:
ufw allow 80/tcp
ufw allow 443/tcp
ufw statusAlmaLinux und Rocky Linux mit firewalld:
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reloadWeg A: nginx mit certbot
nginx installieren
Debian und Ubuntu:
apt update
apt install -y nginx certbot python3-certbot-nginxAlmaLinux und Rocky Linux (certbot kommt aus EPEL):
dnf install -y epel-release
dnf install -y nginx certbot python3-certbot-nginx
systemctl enable --now nginxDie Seite anlegen
Leg einen Ordner für die Dateien und eine Testseite an:
mkdir -p /var/www/example.de
echo '<h1>Es läuft</h1>' > /var/www/example.de/index.htmlDann die Konfiguration /etc/nginx/conf.d/example.de.conf. Den Ordner conf.d lesen alle genannten Systeme:
server {
listen 80;
listen [::]:80;
server_name example.de www.example.de;
root /var/www/example.de;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Konfiguration prüfen und neu laden:
nginx -t
systemctl reload nginxAuf AlmaLinux und Rocky Linux mit SELinux bekommt der neue Ordner noch den richtigen Kontext:
restorecon -Rv /var/www/example.deZertifikat holen
certbot --nginx -d example.de -d www.example.decertbot fragt nach einer E-Mail-Adresse für Ablaufwarnungen und nach den Nutzungsbedingungen von Let's Encrypt. Danach trägt es das Zertifikat in deine nginx-Konfiguration ein und leitet HTTP auf HTTPS um.
Das Zertifikat gilt 90 Tage. certbot erneuert es selbst über einen systemd-Timer. Ob die Erneuerung klappen würde, prüfst du so:
certbot renew --dry-runWeg B: Caddy mit automatischem HTTPS
Caddy installieren
Debian und Ubuntu, aus dem offiziellen Caddy-Repository:
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl gnupg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' -o /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install -y caddyAlmaLinux und Rocky Linux, über das offizielle COPR-Repository:
dnf install -y 'dnf-command(copr)'
dnf copr enable -y @caddy/caddy
dnf install -y caddy
systemctl enable --now caddyDie Seite anlegen
mkdir -p /var/www/example.de
echo '<h1>Es läuft</h1>' > /var/www/example.de/index.htmlErsetz den Inhalt von /etc/caddy/Caddyfile durch:
example.de, www.example.de {
root * /var/www/example.de
file_server
}Konfiguration prüfen und neu laden:
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyCaddy holt das Zertifikat beim ersten Laden selbst, leitet HTTP auf HTTPS um und erneuert es rechtzeitig. Mehr musst du nicht tun.
Auf AlmaLinux und Rocky Linux mit SELinux: restorecon -Rv /var/www/example.de.
Prüfen, ob es geklappt hat
Von deinem PC oder vom Server aus:
curl -I https://example.deDie erste Zeile sollte HTTP/2 200 oder HTTP/1.1 200 OK sein. Und curl -I http://example.de sollte mit 301 oder 308 auf https:// umleiten. Im Browser siehst du das Schloss neben der Adresse.
Häufige Fehler
- certbot oder Caddy meldet „Timeout during connect“ oder „unauthorized“. Let's Encrypt erreicht deinen Server nicht über Port 80. Prüf den A- und AAAA-Eintrag und die Firewall. Stimmt der AAAA-Eintrag nicht, lösch ihn oder richte IPv6 ein.
- „too many certificates already issued“. Let's Encrypt begrenzt, wie oft du für dieselbe Domain ein Zertifikat holen kannst. Teste mit
certbot --dry-runoder warte, bis die Sperre abläuft. nginx -tmeldet „conflicting server name“. Der Name steht in zwei Konfigurationen. Lösch die doppelte.bind() to 0.0.0.0:80 failed (Address already in use). Ein anderer Dienst, oft der zweite Webserver, belegt den Port.ss -tlnp | grep ':80'zeigt, welcher.- 403 Forbidden auf AlmaLinux oder Rocky. Meist SELinux.
restorecon -Rv /var/www/example.deausführen.
Wie es weitergeht
- Eine Datenbank dazu: MariaDB einrichten.
- WordPress auf diesem Webserver: PHP und WordPress.
- Den Server regelmäßig sichern: Backups einrichten.
Willst du dich nicht selbst um den Server kümmern, gibt es CitexNode Deploy; Webspace kommt bald dazu. Kommst du nicht weiter, schreib uns ein Ticket.