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.
Was ist das Problem?
Abschnitt betitelt „Was ist das Problem?“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.
Mixed Content finden
Abschnitt betitelt „Mixed Content finden“- Seite öffnenhttps://meinprojekt.de
- F12 drücken, Reiter KonsoleMeldungen „Mixed Content“
- Adressen notierenWelche Dateien sind http?
- Quelle bestimmenDatenbank, Theme, Plugin, Datei
- Beheben und Cache leeren
- Ö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://…'. - Im Reiter Netzwerk siehst du alle Adressen. Filtere nach
http:. - Prüfe mehrere Seiten, nicht nur die Startseite.
Auf der Kommandozeile findest du Reste im Quelltext:
curl -s https://meinprojekt.de/ | grep -o 'http://[^"'\'' )]*' | sort -uUrsachen und Lösungen
Abschnitt betitelt „Ursachen und Lösungen“| 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 |
WordPress: Alles auf https umstellen
Abschnitt betitelt „WordPress: Alles auf https umstellen“- Backup erstellen. Datenbank und Dateien (Backups und Wiederherstellung). Besser: erst auf einer Staging-Kopie testen (Staging und Klonen).
- Prüfe unter Einstellungen, Allgemein, ob WordPress-Adresse und Website-Adresse mit
https://beginnen. Kannst du sie dort nicht ändern, stehen sie fest in derwp-config.php. - Ersetze alte Adressen in der Datenbank (siehe unten).
- Leere alle Caches.
- Prüfe die Seite mit F12 erneut.
Suchen und Ersetzen mit WP-CLI
Abschnitt betitelt „Suchen und Ersetzen mit WP-CLI“Mit SSH (bei WordPress Hosting ab dem Tarif Basic, bei Webspace in jedem Tarif):
# Zuerst nur testen, nichts ändernwp search-replace 'http://meinprojekt.de' 'https://meinprojekt.de' --all-tables --dry-run
# Dann wirklich ersetzenwp search-replace 'http://meinprojekt.de' 'https://meinprojekt.de' --all-tableswp search-replace behandelt serialisierte Daten (viele Plugins speichern so) korrekt. Das ist der entscheidende Vorteil gegenüber einem einfachen Ersetzen in der Datenbank.
Ohne SSH: Plugin
Abschnitt betitelt „Ohne SSH: Plugin“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.
Mit phpMyAdmin (nur für Fortgeschrittene)
Abschnitt betitelt „Mit phpMyAdmin (nur für Fortgeschrittene)“Exportiere die Datenbank, ersetze im Export mit einem Werkzeug, das serialisierte Daten kennt, und importiere sie zurück. Vorher unbedingt sichern (Datenbanken und phpMyAdmin).
Weiterleitung und HSTS
Abschnitt betitelt „Weiterleitung und HSTS“Damit niemand mehr die http-Version nutzt, leitest du alles auf https um (.htaccess-Grundlagen):
RewriteEngine OnRewriteCond %{HTTPS} !=onRewriteRule ^(.*)$ 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.
Der Browser warnt trotzdem
Abschnitt betitelt „Der Browser warnt trotzdem“Häufige Fragen
Abschnitt betitelt „Häufige Fragen“Ich habe alles ersetzt, aber die Meldung bleibt.
Abschnitt betitelt „Ich habe alles ersetzt, aber die Meldung bleibt.“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.
Soll ich relative Adressen nutzen?
Abschnitt betitelt „Soll ich relative Adressen nutzen?“Für eigene Dateien sind relative Adressen (/bilder/logo.png) oder https:// am sichersten. Verzichte auf http://.