Zum Inhalt springen

08Website-Wissen & Fehlercodes

SSL und Mixed Content – „Nicht sicher“ beheben

Warum der Browser trotz Zertifikat „Nicht sicher“ zeigt, wie du Mixed Content findest und in WordPress per Suchen und Ersetzen behebst – bei Nexthosting.

Kurz gesagt

Mixed Content entsteht, wenn eine Seite über https geladen wird, aber einzelne Bilder, Skripte oder Stile noch über http:// eingebunden sind. Der Browser blockiert oder markiert sie, das Schloss verschwindet. Die Lösung: alle Adressen in Datenbank, Theme und Dateien auf https:// umstellen. In WordPress geht das mit Suchen und Ersetzen.

Mit einem Zertifikat (SSL-Zertifikate und HTTPS) wird die Verbindung zur Seite verschlüsselt. Lädt die Seite aber eine Datei unverschlüsselt nach, könnte jemand im Netz diese Datei verändern und Schadcode einschleusen. Deshalb greift der Browser ein.

Art Beispiel Verhalten des Browsers
Aktiver Mixed Content Skripte, Stile, iFrames über http:// Wird blockiert, Seite sieht kaputt aus
Passiver Mixed Content Bilder, Videos über http:// Wird oft geladen, aber das Schloss zeigt eine Warnung

Typische Zeichen: kaputtes Layout, fehlende Bilder, Meldung „Diese Seite ist nicht vollständig sicher“, Schloss mit Ausrufezeichen oder durchgestrichen.

So findest du die unsicheren Adressen
  1. Seite öffnenhttps://meinprojekt.de
  2. F12 drücken, Reiter KonsoleMeldungen „Mixed Content“
  3. Adressen notierenWelche Dateien sind http?
  4. Quelle bestimmenDatenbank, Theme, Plugin, Datei
  5. Beheben und Cache leeren
  1. Öffne die Seite und drücke F12. In der Konsole steht zum Beispiel: Mixed Content: The page at 'https://…' was loaded over HTTPS, but requested an insecure image 'http://…'.
  2. Im Reiter Netzwerk siehst du alle Adressen. Filtere nach http:.
  3. Prüfe mehrere Seiten, nicht nur die Startseite.

Auf der Kommandozeile findest du Reste im Quelltext:

Terminal-Fenster
curl -s https://meinprojekt.de/ | grep -o 'http://[^"'\'' )]*' | sort -u
Ursache Wo sie steckt Lösung
Bilder mit http:// in Beiträgen WordPress-Datenbank Suchen und Ersetzen
Fest eingetragene Adressen im Theme header.php, style.css, Customizer Auf https:// oder relative Adresse ändern
Plugin lädt Skript über http Plugin-Einstellungen oder -Code Plugin aktualisieren, Einstellung ändern
Alte Einbettungen (YouTube, Karten, Schriften) Beitrag oder Widget Eingebettete Adresse auf https://
WordPress-Adresse noch http:// Einstellungen, Allgemein Auf https:// stellen
Cache liefert alte http-Version Cache-Plugin, Server, Cloudflare Caches leeren (Cache verstehen)
CSS verweist auf url(http://…) Stylesheet Adresse ändern
  1. Backup erstellen. Datenbank und Dateien (Backups und Wiederherstellung). Besser: erst auf einer Staging-Kopie testen (Staging und Klonen).
  2. Prüfe unter Einstellungen, Allgemein, ob WordPress-Adresse und Website-Adresse mit https:// beginnen. Kannst du sie dort nicht ändern, stehen sie fest in der wp-config.php.
  3. Ersetze alte Adressen in der Datenbank (siehe unten).
  4. Leere alle Caches.
  5. Prüfe die Seite mit F12 erneut.

Mit SSH (bei WordPress Hosting ab dem Tarif Basic, bei Webspace in jedem Tarif):

Terminal-Fenster
# Zuerst nur testen, nichts ändern
wp search-replace 'http://meinprojekt.de' 'https://meinprojekt.de' --all-tables --dry-run
# Dann wirklich ersetzen
wp search-replace 'http://meinprojekt.de' 'https://meinprojekt.de' --all-tables

wp search-replace behandelt serialisierte Daten (viele Plugins speichern so) korrekt. Das ist der entscheidende Vorteil gegenüber einem einfachen Ersetzen in der Datenbank.

Plugins für „Search and Replace“ gibt es im WordPress-Verzeichnis (wordpress.org). Prüfe, dass es serialisierte Daten unterstützt, führe zuerst einen Probelauf aus, mache ein Backup und deinstalliere das Plugin nach der Arbeit.

Exportiere die Datenbank, ersetze im Export mit einem Werkzeug, das serialisierte Daten kennt, und importiere sie zurück. Vorher unbedingt sichern (Datenbanken und phpMyAdmin).

Damit niemand mehr die http-Version nutzt, leitest du alles auf https um (.htaccess-Grundlagen):

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Die Weiterleitung allein behebt Mixed Content nicht, denn die Seite selbst lädt weiterhin http-Adressen nach. Beides gehört zusammen.

Optional: Mit HSTS (Strict-Transport-Security) merkt sich der Browser, dass deine Domain nur über https erreichbar ist. Schalte es erst ein, wenn alles läuft.

Das Schloss fehlt oder es erscheint eine Warnung
Meldung „Zertifikat ungültig“ oder „abgelaufen“Zertifikat prüfen oder erneuern
Warnung „Die Domain passt nicht zum Zertifikat“Domain auf den Server zeigen lassen, Zertifikat für alle Namen
Nur Hinweis „nicht vollständig sicher“Mixed Content: Konsole prüfen (diese Seite)
Seite lädt in einer EndlosschleifeWeiterleitungsschleife

Leere den Browser-Cache, den WordPress-Cache und den Cache eines vorgeschalteten Dienstes. Prüfe dann in der Konsole, welche Adresse noch http ist.

Schadet Mixed Content der Suchmaschinen-Platzierung?

Abschnitt betitelt „Schadet Mixed Content der Suchmaschinen-Platzierung?“

Indirekt: Besucher bekommen Warnungen und verlassen die Seite, und blockierte Skripte können das Layout zerstören.

Für eigene Dateien sind relative Adressen (/bilder/logo.png) oder https:// am sichersten. Verzichte auf http://.