TLS und Zertifikate für Astro konfigurieren
Schritt-für-Schritt-Anleitung: TLS-Konfiguration auf Server-Ebene -- Let's Encrypt, Nginx Reverse Proxy und Hosting-Plattform-Varianten.
TLS und Zertifikate in Astro
TLS (Transport Layer Security) verschlüsselt die Verbindung zwischen Browser und Server. TLS-Konfiguration erfolgt nicht in Astro selbst, sondern auf dem Webserver (Nginx, Apache) oder der Hosting-Plattform (Vercel, Netlify). TLS ist mit 4 von 166 Punkten im Wolf-Agents Web Security Check relevant.
Für Self-Hosted Astro mit dem @astrojs/node-Adapter empfiehlt sich ein Nginx Reverse Proxy mit Let's Encrypt. Hosting-Plattformen wie Vercel und Netlify stellen TLS-Zertifikate automatisch bereit. Wolf-Agents nutzt Astro SSR hinter Nginx mit Let's Encrypt und TLS 1.3.
Neben der TLS-Konfiguration ist der HSTS-Header (Strict-Transport-Security) entscheidend: Er weist Browser an, ausschließlich HTTPS zu verwenden und verhindert Downgrade-Angriffe. HSTS können Sie direkt in der Astro-Middleware setzen.
Nginx TLS-Konfiguration
Konfigurieren Sie TLS auf dem Nginx Reverse Proxy. Verwenden Sie TLS 1.2 und 1.3 als Minimum, starke Cipher Suites und OCSP Stapling. Setzen Sie X-Forwarded-Proto, damit Astro erkennt, ob die Verbindung über HTTPS laeuft.
# Nginx -- TLS-Konfiguration für Astro (SSR oder SSG)
server {
listen 443 ssl http2;
server_name ihre-domain.de;
# Let's Encrypt Zertifikat
ssl_certificate /etc/letsencrypt/live/ihre-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ihre-domain.de/privkey.pem;
# TLS-Version und Cipher Suites
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
# Astro SSR Reverse Proxy
location / {
proxy_pass http://127.0.0.1:4321;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Let's Encrypt einrichten
Installieren Sie Certbot und fordern Sie ein kostenloses TLS-Zertifikat an. Die automatische Erneuerung stellt sicher, dass Ihr Zertifikat nie ablaeuft. Konfigurieren Sie einen Deploy-Hook, um Nginx nach jeder Erneuerung neu zu laden.
# Let's Encrypt mit Certbot
sudo certbot certonly --nginx -d ihre-domain.de -d www.ihre-domain.de
# Automatische Erneuerung prüfen
sudo certbot renew --dry-run
# Cron-Job (automatisch von Certbot eingerichtet)
# 0 */12 * * * /usr/bin/certbot renew --quiet
# Nginx nach Erneuerung neu laden
# --deploy-hook "systemctl reload nginx"HSTS per Middleware und Hosting-Varianten
Setzen Sie den HSTS-Header per Middleware (SSR) oder auf der Hosting-Plattform. Beginnen Sie mit einem niedrigen max-age (z.B. 3600) und erhöhen Sie auf 2 Jahre (63072000), wenn alles funktioniert. preload nur setzen, wenn Sie die Domain in die HSTS-Preload-Liste eintragen moechten.
// src/middleware.ts -- HSTS per Middleware (SSR)
import { defineMiddleware } from 'astro:middleware';
export const onRequest = defineMiddleware(async (context, next) => {
const response = await next();
// HSTS: Browser soll nur HTTPS verwenden (2 Jahre)
response.headers.set('Strict-Transport-Security',
'max-age=63072000; includeSubDomains; preload');
return response;
});// vercel.json -- TLS wird automatisch bereitgestellt
// Nur HSTS manuell setzen:
{
"headers": [{
"source": "/(.*)",
"headers": [{
"key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains; preload"
}]
}]
}
# public/_headers -- Netlify/Cloudflare Pages
# /*
# Strict-Transport-Security: max-age=63072000; includeSubDomains; preloadTLS verifizieren
Prüfen Sie Ihre TLS-Konfiguration mit SSL Labs und dem Wolf-Agents Web Security Check. Stellen Sie sicher, dass TLS 1.3 aktiv ist und der HSTS-Header korrekt gesetzt wird.
# TLS-Version prüfen
openssl s_client -connect ihre-domain.de:443 -tls1_3 < /dev/null 2>&1 | grep "Protocol"
# Protocol : TLSv1.3
# HSTS-Header prüfen
curl -sI https://ihre-domain.de | grep -i strict-transport
# Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
# SSL Labs: https://www.ssllabs.com/ssltest/analyze.html?d=ihre-domain.de
# Ziel: Note A oder A+ Hosting-Plattformen: Automatisches TLS
Bei Vercel und Netlify wird TLS automatisch bereitgestellt -- Sie müssen kein Zertifikat konfigurieren. Beide Plattformen verwenden TLS 1.3 und automatische Zertifikatserneuerung. Sie müssen nur den HSTS-Header setzen, um Downgrade-Angriffe zu verhindern.
Bei Cloudflare Pages wird TLS auf dem Edge-Server terminiert. Aktivieren Sie "Always Use HTTPS" und "Minimum TLS Version 1.2" in den Cloudflare-Einstellungen. HSTS können Sie entweder in den Cloudflare-Einstellungen oder im _headers-File setzen.
Bei Self-Hosted Astro (Hetzner, DigitalOcean, AWS EC2) konfigurieren Sie TLS selbst per Let's Encrypt und Nginx. Wolf-Agents nutzt diesen Ansatz mit dem @astrojs/node-Adapter hinter Nginx und automatischer Zertifikatserneuerung per Certbot. Der Nginx-Reverse-Proxy terminiert TLS und leitet HTTP-Anfragen an den Astro-Server weiter.
Häufige Fehler bei TLS in Astro
TLS in Astro konfigurieren
Astro hat keine TLS-Konfiguration. TLS wird immer auf dem Webserver oder der Hosting-Plattform konfiguriert. Der @astrojs/node-Adapter lauscht auf HTTP -- TLS-Terminierung erfolgt im Reverse Proxy.
Zertifikat nicht erneuert
Let's Encrypt-Zertifikate laufen nach 90 Tagen ab. Stellen Sie sicher, dass der Certbot-Cron-Job laeuft und Nginx nach jeder Erneuerung neu geladen wird. Testen Sie mit certbot renew --dry-run.
X-Forwarded-Proto fehlt
Ohne X-Forwarded-Proto: https im Reverse Proxy erkennt Astro die HTTPS-Verbindung nicht. Redirects und Links können dann auf HTTP statt HTTPS zeigen. Setzen Sie den Header in der Nginx-Konfiguration.
HSTS mit preload zu früh aktiviert
preload trägt Ihre Domain in die Browser-Preload-Liste ein -- das lässt sich nur schwer rückgängig machen. Testen Sie zuerst mit niedrigem max-age ohne preload und aktivieren Sie es erst, wenn HTTPS zuverlässig funktioniert.
Compliance-Relevanz
TLS-Verschlüsselung ist eine Grundanforderung von NIS2, PCI DSS 4.0 und der DSGVO. Ohne TLS ist keine sichere Datenübertragung möglich -- DSGVO Artikel 32 fordert Verschlüsselung als technische Maßnahme. PCI DSS 4.0 verlangt mindestens TLS 1.2 für die Übertragung von Karteninhaberdaten. Der Wolf-Agents Web Security Check bewertet TLS mit bis zu 4 Punkten -- inklusive Versionsprüfung und Zertifikatsdetails.
Wie steht Ihre Domain bei TLS und Zertifikate?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.