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

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 deiner 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.

Was SSL ist und wie du es erkennst

SSL ist ein Verschlüsselungsprotokoll, was für eine sichere Verbindung zwischen deiner Website (bzw. deinem Server) und deinem Websitebesucher sorgt. Du erkennst es an dem https (nicht http) in deiner Website URL (z.B. https://www.soulsites.de). Beziehungsweise siehst du in der URL Leiste deines Browsers ein kleines Schloss, wenn dein SSL Zertifikat aktiviert ist:

Falls es nicht aktiviert ist oder nicht richtig eingerichtet, sieht es so aus:

Wenn du das siehst, solltest du dringend etwas ändern 🙂

Denn, seit Juli 2018 indexiert Google Websites ohne (oder ohne richtig funktionierendes) SSL als “unsicher” und setzt sie im Ranking entsprechend herab. Außerdem können ohne funktionierendes SSL Kontaktdaten deiner Website Nutzer nur unverschlüsselt übertragen werden, was laut DSGVO nicht sein darf.

Gründe für eine sichere Verbindung gibt es auf jeden Fall genug und mir fällt kein Grund ein kein SSL zu nutzen.

Wie du deine Seite auf SSL testen kannst

Der SSL Test ist super einfach. Gib einfach deine Website URL im Browser (am Besten Chrome) ein und setze ein https:// davor (z.B. https://soulsites.de oder https://www.soulsites.de). Wenn die Seite jetzt normal geladen wird und das Schloss neben der URL angezeigt wird hast du immerhin schomal ein SSL Zertifikat für diese Domain angelegt. Falls nun die Fehlermeldung “Diese Website ist nicht sicher” kommt oder statt dem Schloss neben der URL “nicht sicher” steht, hast du noch kein SSL Zertifikat angelgt.

Wenn dir das Schloss bei https angezeigt wurde kannst du nochmal deine Domain eingeben, aber diesmal nur mit http davor (ohne “s”). Wenn alles gut ist, sollte die Seite jetzt automatisch auf https springen und als sicher angezeigt werden. Falls nicht, hast du zwar ein SSL Zertifikat angelegt, aber es wird nicht durchgängig erzwungen. Dann kannst du bei Schritt 2 dieser Anleitung weiterlesen.

Einen genaueren Test mit vielen detaillierten Daten zu deinem SSL Zertifikat findest du bei Qualis.

1. Schritt: Ein gültiges SSL Zertifikat bei deinem Hosting Anbieter anlegen

Was ich hier nur schwer im Detail erklären kann, ist wie du ein SSL Zertifikat für deine Domain in deinem Webspace anlegst. Viele Hosting Anbieter haben die Möglichkeit kostenlose SSL Zertifikate mit Let’s Encrypt anzulegen. Einige bieten aber auch nur kostenpflichtige Zertifikate an. Es lohnt sich aber immer erstmal nach der kostenlosen Variante zu suchen. Oft gibt es auch beides und das Let’s Encrypt ist nur etwas schwerer zu finden.

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. In manchen Fällen kann es ein paar Stunden dauern, bis das SSL vollständig für deine Domain verfügbar ist.

2. Schritt: SSL in WordPress richtig einstellen und erzwingen

Der einfachste Weg: Nutze ein Plugin

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.

Du kannst es direkt über dein WordPress Dashboard -> Plugins -> Installieren und aktivieren. Nun findest du unter Einstellungen -> SSL die Plugin Einstellungen:

Dort siehst du, wie der aktuelle SSL Zustand deiner Website ist und kannst einfach auf “Auf geht’s, aktiviere SSL” klicken. Wenn alles richtig eingerichtet werden konnte, sollte überall ein grünes Häkchen stehen, wo nicht “Premium” dahinter steht. Falls etwas nicht funktioniert hat, kommt eine entsprechende Warnung mit einer weiteren Anleitung zu dem entsprechendem Problem. Du kannst entweder dieser folgen oder hier weiterlesen und es ohne Plugin versuchen.

Die Funktionen in der Premium Versionen HSTS, sichere Cookies und scannen der Website nach Mixed Content können dir helfen deine Website noch besser abzusichern.

SSL ohne Plugin richtig einstellen

3. 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.

Außerdem kannst du deine Website bei hstspreload auf eine Liste setzen lassen, um den gängigen Webbrowsern mitzuteilen, dass deine Website nur noch über https geladen werden soll. Das gibt deiner Website mehr Vertrauen und mehr Vertrauen sorgt für ein besseres Ranking.

Bevor du das HSTS einrichtest solltest du dir unbedingt sicher sein, dass alle Inhalte deiner Seite, INKLUSIVE SUBDOMAINS richtig auf https umgeleitet werden!

HSTS in den Header einfügen

Füge folgenden Code in deine functions.php Datei ein. Diese findest du unter Design -> Theme-Editor auf der rechten Seite. Den Code kannst du einfach am Ende der Datei einfügen:

/**
* Enables the HTTP Strict Transport Security (HSTS) header.
*
*/
function hsts_header() {

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

}

add_action( ‘send_headers’, ‘hsts_header’ );

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.