TLS & Zertifikate in Contao konfigurieren

TLS/SSL-Zertifikate in Contao aktivieren — Apache VirtualHost mit Let's Encrypt, HTTPS-Redirect und Website-Root-Konfiguration. Mit Verifizierung und häufigen Fehlern.

Contao · Schritt für Schritt

TLS & Zertifikate in Contao

TLS-Zertifikate verschlüsseln die gesamte Datenübertragung zwischen Browser und Server. Ohne TLS werden Passwörter, Formulardaten und Session-Cookies im Klartext übertragen — ein leichtes Ziel für Man-in-the-Middle-Angriffe. Moderne Konfiguration bedeutet TLS 1.2+ mit starken Cipher-Suites und automatischer Zertifikatserneuerung. Im Wolf-Agents Web Security Check fließen TLS-Konfiguration und Zertifikatsgültigkeit mit 4 von 166 Punkten ein.

TLS wird auf Server-Ebene konfiguriert — nicht in Contao selbst. In Contao hinterlegen Sie unter Einstellungen → Website-Root die Domain mit https://-Prefix. Auf Apache-Servern konfigurieren Sie TLS in der VirtualHost-Datei, auf Shared Hosting über das Provider-Panel. Entscheidend ist, dass Contao weiß, dass es hinter HTTPS läuft, damit alle generierten URLs, Canonical-Tags und Sitemap-Einträge korrekt sind.

Der Wolf-Agents Web Security Check prüft Ihr TLS-Zertifikat auf Gültigkeit, Ablaufdatum, Cipher-Suites und Protokollversionen. Abgelaufene Zertifikate oder veraltete Protokolle (TLS 1.0/1.1) führen zu Punktabzügen.

TLS-Konfiguration für Contao

Die TLS-Konfiguration erfolgt in der Apache VirtualHost-Datei. Let's Encrypt bietet kostenlose Zertifikate mit automatischer Erneuerung. Nach der Server-Konfiguration müssen Sie in Contao den Website-Root auf HTTPS umstellen und den Application-Cache leeren, damit alle internen Links korrekt generiert werden.

Apache VirtualHost
/etc/apache2/sites-available/contao.conf Server-Konfiguration
# Apache VirtualHost — Let's Encrypt TLS-Zertifikat
<VirtualHost *:443>
  ServerName ihre-domain.de
  ServerAlias www.ihre-domain.de
  DocumentRoot /var/www/contao/public

  SSLEngine on
  SSLCertificateFile    /etc/letsencrypt/live/ihre-domain.de/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/ihre-domain.de/privkey.pem

  # Moderne TLS-Konfiguration (Mozilla Intermediate)
  SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
  SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
  SSLHonorCipherOrder     off
  SSLSessionTickets       off

  # OCSP Stapling für schnellere Handshakes
  SSLUseStapling          on
  SSLStaplingCache        "shmcb:/var/run/ocsp(128000)"
</VirtualHost>

# HTTP → HTTPS Redirect
<VirtualHost *:80>
  ServerName ihre-domain.de
  Redirect permanent / https://ihre-domain.de/
</VirtualHost>

Auf Shared Hosting ohne Zugriff auf die VirtualHost-Konfiguration nutzen Sie den HTTPS-Redirect in der .htaccess. Die meisten Hoster bieten Let's Encrypt-Zertifikate über ihr Control Panel an (Plesk, cPanel, ISPConfig).

.htaccess + Contao-Backend
public/.htaccess Shared Hosting
# public/.htaccess — HTTPS erzwingen (Shared Hosting)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Contao Website-Root auf HTTPS umstellen:
# Backend → System → Einstellungen → Website-Root
# Domain: https://ihre-domain.de

# Let's Encrypt Zertifikat einrichten:
# certbot --apache -d ihre-domain.de -d www.ihre-domain.de
# Auto-Renewal: systemctl enable certbot.timer
Cache leeren nach HTTPS-Umstellung

Nach der Umstellung auf HTTPS: vendor/bin/contao-console cache:clear --env=prod. Contao cached URLs und Sitemap-Einträge.

Verifizierung

Prüfen Sie nach der TLS-Konfiguration mehrere Aspekte: Ist das Zertifikat gültig? Werden nur moderne Protokolle akzeptiert? Funktioniert der HTTPS-Redirect korrekt? Generiert Contao alle URLs mit https://? Testen Sie die Sitemap und die Canonical-Tags in den Seitenquellen.

Terminal Verifizierung
# 1. TLS-Protokoll und Cipher prüfen
openssl s_client -connect ihre-domain.de:443 -tls1_2 < /dev/null 2>/dev/null | grep "Protocol\|Cipher"

# Erwartete Ausgabe:
# Protocol  : TLSv1.2
# Cipher    : ECDHE-RSA-AES256-GCM-SHA384

# 2. Zertifikat-Ablaufdatum prüfen
echo | openssl s_client -connect ihre-domain.de:443 2>/dev/null | openssl x509 -noout -dates
# notAfter=Jun 28 00:00:00 2026 GMT

# 3. HTTPS-Redirect testen
curl -sI http://ihre-domain.de | head -3
# HTTP/1.1 301 Moved Permanently
# Location: https://ihre-domain.de/

# 4. Cache leeren nach HTTPS-Umstellung
vendor/bin/contao-console cache:clear --env=prod

# 5. Wolf-Agents Web Security Check: TLS-Prüfung (4 Punkte)

Prüfen Sie zusätzlich die Contao-Sitemap unter /sitemap.xml — alle URLs müssen mit https:// beginnen. Nutzen Sie den Wolf-Agents Web Security Check für eine vollständige TLS-Analyse inklusive Cipher-Suite-Bewertung.

Häufige Fehler bei TLS in Contao

Website Root ohne HTTPS konfiguriert

Im Contao-Backend muss die Domain unter Website-Root mit https:// hinterlegt sein. Ohne HTTPS-Prefix generiert Contao alle internen Links, Sitemap-URLs und Canonical-Tags mit http:// — das führt zu Mixed-Content-Warnungen und doppelter Indexierung.

Mixed Content nach HTTPS-Migration

Hartcodierte http://-URLs in Content-Elementen, Insert-Tags oder Templates verursachen Mixed-Content-Warnungen. Nutzen Sie die Contao-Datenbanksuche, um alle HTTP-URLs auf HTTPS umzustellen. Prüfen Sie auch benutzerdefinierte Templates und CSS-Dateien.

Let's Encrypt Renewal fehlgeschlagen

Certbot benötigt Port 80 für die HTTP-01-Challenge. Wenn der Redirect zu aggressiv ist oder eine WAF den ACME-Pfad blockiert, schlägt die Erneuerung fehl. Prüfen Sie mit certbot renew --dry-run und stellen Sie sicher, dass /.well-known/acme-challenge/ erreichbar ist.

contao-console cache:clear vergessen

Nach der Umstellung von HTTP auf HTTPS muss der Contao-Cache geleert werden: vendor/bin/contao-console cache:clear --env=prod. Ohne Cache-Invalidierung liefert Contao weiterhin HTTP-URLs in der Sitemap und Navigation.

Compliance-Relevanz

Verschlüsselte Datenübertragung ist die Grundvoraussetzung für jede Compliance-Anforderung. Ohne TLS ist keine DSGVO-konforme Verarbeitung personenbezogener Daten möglich — Kontaktformulare, Login-Seiten und E-Commerce-Funktionen erfordern zwingend HTTPS.

NIS2Art. 21(d) — Sicherheit der Lieferkette einschließlich verschlüsselter Kommunikation zwischen Systemen
DSGVOArt. 32(1)(a) — Verschlüsselung personenbezogener Daten bei der Übertragung als technische Maßnahme
BSIAPP.3.1.A3 — Verschlüsselte Kommunikation mit TLS 1.2+, starke Cipher-Suites, OCSP Stapling
PCI DSS 4.0Req. 4.1 — Starke Kryptografie für die Übertragung von Karteninhaberdaten über offene Netze

Wie steht Ihre Domain bei TLS & Zertifikate?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.