SSL in WordPress richtig einrichten – http zu https umleiten und Mixed Content verhindern​

von Christian Wedel

Was mir immer wieder bei meiner Arbeit begegnet sind Fehler bei der Einrichtung von SSL Zertifikaten in WordPress. Gerade wenn deine Website schon etwas älter ist und du nachträglich ein SSL Zertifikat einsetzen möchtest, kommt es oft zu Fehlern mit “Mixed Content” und Teile der Website werden trotzdem nicht über https geladen.

In diesem Artikel zeige ich dir verschiedene Möglichkeiten, wie du das SSL auf deiner WordPress Website richtig installierst und für eine sichere Verbindung sorgst. Manchmal kann es ziemlich schwierig sein alle http Seiten zu https umzuleiten, deshalb zeige ich dir hier gleich einige verschiedene Wege das SSL in WordPress zu erzwingen. Ich fange mit den einfachsten Lösungen an und gehe Stück für Stück in die Tiefe.

1. Was ist SSL? Woher weiß ich, ob ich schon ein SSL Zertifikat habe?

SSL ist ein Verschlüsselungsprotokoll, was für eine sichere Verbindung zwischen deiner Website (bzw. deinem Server) und deinen Usern sorgt. Du erkennst es zum einen an dem https (nicht http) in deiner Website URL (z.B. https://www.soulsites.de) und zum anderen an dem in der Adresszeile deines Browsers.

Ein einfacher Test

Gib deine Website URL im Browser (z.B. Chrome) ein und schreibe ein https:// davor (z.B. https://soulsites.de).

Das schlimmste, was passieren kann ist das (oder so ähnlich): 

SSL in WordPress einrichten

Wenn du das siehst, hast du kein SSL Zertifikat für deine Seite und siehst auch gleich, dass diese als nicht privat eingestuft wird.

Falls deine Website normal lädt achte im Browser auf das kleine Schloss neben der URL:

Wenn es bei dir so aussieht, has du ein SSL Zertifikat installiert, aber nicht erzwungen. Das heißt, dass manche Ressourcen (Bilder, JavaScript Code, CSS…) trotzdem über eine unsichere Verbindung geladen werden. 

Das Schloss zeigt dir an, dass auf deiner Seite alles über SSL geladen wird. Du brauchst nichts weiter zu tun, aber teste lieber deine Unterseiten, ob diese auch sicher sind.

Natürlich gibt es noch verschiedene Sicherheitsabstufungen bei den SSL Zertifikaten. Wenn du gerne ganz genau wissen willst, wie sicher deine Website ist, kannst du den Test von Qualis laufen lassen. Da bekommst du ganz genaue Daten.

Was ist der Unterschied zwischen SSL und TLS?

Eigentlich heißt SSL in den neusten Versionen jetzt TLS. Als das SSL Zertifikat von SSLv3.0 auf die nächste Version gehoben wurde, änderte sich auch der Name. Anstatt SSLv4.0 erschien die Version TLSv1.0. Trotzdem sprechen weiterhin alle von SSL Zertifikaten, auch wenn sie eigentlich TLS Zertifikate meinen. 

Was ist der Unterschied zwischen kostenlosen und kostenpflichtigen SSL Zertifikaten?

Du kannst dir bei den meisten Hosting Anbietern entweder kostenlose SSL Zertifikate von Let’s Encrypt generieren lassen oder kostenpflichtige Zertifikate registrieren lassen. 

Nicht alle Zertifikate sind gleich. Wichtig ist erstmal, dass

  1. Alle gängigen SSL Zertifikate die gleiche Verschlüsselung anbieten (2048 key encryption und 256-bit certificate encryption).
  2. Und alle sorgen dafür, dass deine Seite besser rankt (im Vergleich zu gar keiner Verschlüsselung).

Die Unterschiede zeigen sich hauptsächlich in der Validierung. Also im Nachweis über den Inhaber der Website. Dieser kann entweder selbst angegeben werden oder von einer externen Stelle überprüft werden. Dabei gibt es drei Stufen:

  1. Domain Validation (DV) 
  2. Organization Validation (OV) <- nicht kostenlos
  3. Extended Validation (EV) <- nicht kostenlos

Nur die Domain Validation wird von Let’s Encrypt abgedeckt und beutet, dass der Inhaber selbst angegeben hat, dass seine Website vertrauenswürdig ist.

Bei den kostenpflichtigen Versionen (OV und EV) ist der Nachweis etwas ausführlicher, was für deine User bedeutet, dass deine Website noch vertrauenswürdiger ist. Das macht besonders bei Online Shops Sinn, die Zahlmethoden über die eigene Website anbieten. Denn da wollen die Kunden natürlich besonders sicher sein, dass ihre Kreditkarten Infos nicht abgefangen werden können. 

Auswirkungen auf das SEO Ranking

Falls du dich fragst, ob eine verschlüsselte Website sich auf das Ranking deiner Website auswirkt: Definitiv JA!

Google straft seit 2017 alle Websites, die nicht über https verschlüsseln und trotzdem personenbezogene Daten verwerten im Ranking ab. Schlimmer noch, sie werden sogar vom Chrome Browser blockiert.

Also gehört SSL absolut dazu, wenn du mit deiner Website irgendwie gefunden werden willst. 

2. Woher bekomme ich ein SSL Zertifikat?

Die meisten Hosting Anbieter bieten kostenlose SSL Zertifikate von Let’s Encrypt an, was für Blogs und kleinere Business Websites meistens vollkommen ausreichend ist.

Wie oben beschrieben, erhöhst du natürlich deinen Trust, wenn du dich für ein kostenpflichtiges Zertifikat entscheidest. Vor allem, wenn es um e-commerce oder größere Unternehmensseiten geht.

Ich geb hier die Links zu den SSL Anleitungen der gängigen Dienstleister, falls dein Anbieter nicht dabei ist, kannst du einfach bei Google suchen:

Nach der Installation solltest du aber unbedingt noch die folgenden Schritte beachten, damit auch alle deine URLs über https laufen (das passiert bei WordPress nicht automatisch). In manchen Fällen kann es ein paar Stunden dauern, bis das SSL vollständig für deine Domain verfügbar ist.
 

3. SSL in WordPress erzwingen (http zu https umleiten) mit dem Plugin "Really Simple SSL"

Es gibt einige verschiedene WordPress Plugins, die dir helfen SSL richtig einzurichten. Das Plugin, womit ich bisher am meisten Glück hatte ist: Really Simple SSL. Das ist in der Basisversion kostenlos und deckt die meisten Fälle gut ab.

  • gehe im Dashboard auf Plugins -> installieren
  • suche nach “Really Simple SSL”
  • installiere das Plugin und aktiviere es
  • jetzt findest du es unter Einstellungen -> SSL
  • dort klickst du auf “Auf geht’s, aktiviere SSL”

Wenn du jetzt überall grüne Häkchen siehst (außer bei den Premium Funktionen) ist deine Website erstmal hinreichend gesichert.

Teste jetzt nochmal deine Startseite und ein paar Unterseiten, ob im Browser auch überall das Schloss angezeigt wird. Falls nicht versuche die folgenden Punkte ohne das Plugin.

4. SSL ohne Plugin richtig in WordPress einstellen (http manuell auf https umleiten)

Mach ein Backup!

Bevor du folgende Einstellungen vornimmst mach lieber ein Backup von deiner Website. Vor allem, wenn es nicht deine eigene, sondern die Website eines Kunden ist. 

Die URL in den Einstellungen ändern

  • gehe auf Einstellungen -> Allgemein
  • ersetze in der WordPress-Adresse (URL) und Website-Adresse (URL) das http durch https
  • speichere deine Einstellungen
  • du wirst aufgefordert dich neu einzuloggen

Die .htaccess Datei bearbeiten

  • als nächstes öffne deine .httaccess Datei 
  • füge folgende Zeilen hinzu:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
  • natürlich speichern nicht vergessen

Die wp-config.php Datei ergänzen

  • öffne jetzt die wp-config.php Datei
  • füge über “That’s all, stop editing!” folgende Zeile hinzu:

define('FORCE_SSL_ADMIN', true);

  • jetzt noch speichern

In den meisten Fällen reich das schon aus. Falls du aber immer noch Probleme mit Mixed Content haben solltest versuch folgendes:

http in der Datenbank durch https ersetzen

Deine ganzen Artikel und Seiten sind samt Metadaten in der Datenbank deiner WordPress Website gespeichert. Deshalb ist auch das der Ort, den du aufräumen solltest, wenn du immer noch Probleme mit Mixed Content hast.

Am einfachsten geht das mit dem Plugin Better Search Replace:

  • du findest es in der Suche unter Plugins -> installieren
  • aktiviere es nach der Installation
  • jetzt findest du die Einstellungen unter Werkzeuge -> Better Search Replace
  • Falls du nicht schon ein BACKUP gemacht hast, wäre spätestens jetzt der passende Zeitpunkt dafür 🙂 
  • gib jetzt bei Suche nach deine alte Website URL mit http:// an
  • und bei Ersetzen durch gibst du die gleiche URL nur mit https:// an
  • markiere jetzt alle Tabellen (str + a bzw. cmd + a)
  • dann sollte es so aussehen:
  • mach lieber als erstes einen Testlauf. Es werden noch keine Daten geändert, sondern nur die Tabellen durchsucht
  • Nach dem Testlauf wird dir oben angezeigt wie viele Einträge mit der alten URL gefunden wurden
  • wenn du es genauer wissen willst kannst du in den Details sehen in welcher Tabelle wie viele Einträge gefunden wurden
  • als letztes kannst du das Häkchen bei Testlauf raus nehmen und alle Einträge ersetzen lassen (das Backup hast du ja gemacht oder?)

Und natürlich musst du jetzt wieder deine Website testen und gucken, ob auf deinen Unterseiten immer ein erscheint.

Noch eine Möglichkeit: SSL über CSP erzwingen

CSP (Content-Security-Policy) ist ein Sicherheitsmodul in allen modernen Browsern, womit du alle Verbindungen zwischen deiner Website und externen Servern kontrollieren kannst.

Was uns hier interessiert ist, dass es eine zusätzliche Möglichkeit bietet unsichere Inhalte (http) zu sicheren Inhalten (https) umzuleiten.

  • dazu öffne nochmal deine .htaccess Datei
  • füge folgende Zeilen hinzu:

<ifModule mod_headers.c>
Header always set Content-Security-Policy “upgrade-insecure-requests;”
</IfModule>

  • Datei speichern und wieder testen

Das ist soweit erstmal alles, was ich bisher über die Umleitung von http zu https rausfinden konnte und bisher habe ich damit sehr gute Erfahrungen gemacht.

Falls du trotzdem noch Probleme mit “Mixed Content” haben solltest, schreib es gerne in die Kommentare. Vielleicht fällt mir ja dann noch was ein. 

5. Schritt: HSTS (HTTP STRICT TRANSPORT SECURITY) in WordPress einrichten - das i-Tüpfelchen

Wenn du erfolgreich ein SSL Zertifikat für deine WordPress Website angelegt und die https Weiterleitung eingerichtet hast, kannst du zusätzlich noch HSTS einrichten. Kurz gesagt ist HSTS die konsequente Form die Website per SSL zu verschlüsseln. Ein zusätzlicher Code im Header sorgt dafür dass kein Inhalt deiner Website (also alle Unterseiten, Bilder, Formulare…) ohne https ausgeliefert werden kann.

Bevor du HSTS auf deiner Website einrichtest versichere dich, dass folgende Punkte erfüllt sind:

  • Du hast ein gültiges SSL Zertifikat
  • Dein gesamter Datenverkehr wird von http auf https umgeleitet
  • Alle Subdomains laufen über https (z.B. www.https://…)
  • Deine Website hat einen HSTS Header. Diesen kannst du z.B. so über die function.php einfügen:

function hsts_header() {

  header( ‘Strict-Transport-Security: max-age=31536000; includeSubDomains; preload’ );

}

add_action( ‘send_headers’, ‘hsts_header’ );

Erklärung: In der Funktion wird im Header mit Strict-Transport-Security festgelegt, dass alle http Anfragen auf https umgeleitet werden sollen. Reine http Anfragen sind somit nicht mehr erlaubt und es kann nur noch verschlüsselt mit der Website kommuniziert werden. Zusätzlich wurde mit die Dauer dieser Policy auf 31536000s festgelegt, was 365 Tagen also 1 Jahr entspricht.

Die Website auf der HSTS-Preload-Liste registrieren

Die HSTS-Preload-Liste ist eine Liste von Websites, die von Google als HSTS genehmigt wurden. Auf diese Liste beziehen sich alle wichtigen Browser und verbieten es Usern die eingetragenen Websites unverschlüsselt aufzurufen.

Das gibt deiner Website nochmal zusätzlichen Trust und kann das Ranking etwas stärken.

  • gehe auf die Website von HSTS-Preload
  • checke hier deine Website auf HSTS Tauglichkeit und du erhältst eines dieser Ergebnisse:

Deine Website ist nicht ausreichend eingerichtet. Folge den Anweisungen, um die letzten Schritte umzusetzen.

Deine Website ist Kompatibel und wenn du dich sicher bist, dass da auch so bleiben wird, kannst du deine Website registrieren.

Geschafft!

Wenn du alle Punkte erledigt hast, sollte deine Website jetzt SSL verschlüsselt sein.

Ist dir doch alles zu kompliziert oder du hast keine Lust alles selbst zu machen, kannst du uns gerne eine Nachricht schreiben und wir helfen dir dabei.