SSL-Verschlüsselung für WordPress-Websites: Teil 1 – Grundlagen

Los geht’s mit dem ersten Beitrag zum #projekt52. Das Thema SSL-Verschlüsselung hat im Laufe des letzten Jahres immens an Tempo zugelegt. Deswegen ist es an der Zeit, dass ich in einer mehrteiligen Serie alle Aspekte der Thematik beleuchte. In diesem ersten Teil geht es um die Grundlagen. Ich bin der Meinung, das alles Technische viel besser verständlich ist, wenn man sich auch den Grundlagen nicht verschließt. 😉

Was ist eine SSL-Verschlüsselung?

Wenn ein Browser eine Website aufruft, geschieht das über das Protokoll HTTP, was auch daran zu erkennen ist, dass die Eingabe der Website-Adresse (URL) mit „http://“ beginnt. Sowohl die Anforderung des Browsers an den Server („Schick mir mal die Seite mit der Adresse XYZ“) als auch die Antwort des Servers („Hier kommt Seite XYZ“) inklusive allen Daten wie eingebundenen Bildern, CSS- und JavaScript-Dateien erfolgt im Klartext, also unverschlüsselt.

Die Eigenheiten des Internets bringen es mit sich, dass auf dem Weg zwischen Browser und Website-Server noch einige andere Server liegen, über die die Kommunikation läuft. Man kann sich das etwa vorstellen, wie den Versuch einen Fluss zu überqueren und dafür von Stein zu Stein zu hüpfen. Die eine Flussseite ist der Browser, die andere Flussseite der Server, auf dem die Website liegt. Für einen direkten Sprung von einer auf die andere Seite ist der Fluss zu breit, deswegen nimmt man Zwischenschritte in Kauf und hüpft von Stein zu Stein. Natürlich sind in diesem Bildnis die Steine im Fluss die anderen Server.

Für unverschlüsselte HTTP-Anfragen bedeutet das, dass alle in der Kommunikation eingebundene Server alle Daten komplett mitlesen können. Bei einer normalen Website ist dies nicht sonderlich problematisch. Spannend wird es jedoch wenn personenbezogene Daten übermittelt werden: die eingegebenen Daten eines Kontaktformulars, die Bezahldaten in einem Shop, die Kontodaten bei der Abfrage des Onlinebankings, usw.

Von diesen Daten möchte man eigentlich nicht, dass Dritte die Möglichkeit haben, diese Daten wie bei einer Postkarte mitzulesen. Aus diesem Grund gibt es die Transportverschlüsselung SSL/TLS. (Technisch reden wir eigentlich von TLS, dem „Nachfolger“ von SSL. Allerdings ist das Ganze unter SSL besser bekannt.) Diese ist erkennbar dadurch, dass die Website per HTTPS aufgerufen wird, die URL also mit „https://“ beginnt.

Transportverschlüsselung bedeutet, dass die Daten, die in beide Richtungen übertragen werden, verschlüsselt sind und am Zielpunkt wieder entschlüsselt werden. Die Server auf dem Weg dazwischen sehen nur einen unverständlichen Datenstrom. Es ist leicht verständlich, dass in sehr vielen Fällen eine Verschlüsselung der übertragenen Daten wünschenswert ist.

Ob eine Kommunikation verschlüsselt abläuft, zeigt der Browser in der Adresszeile an, meistens durch ein kleines grünes Schloss vor der Website-Adresse:

Anzeige einer verschlüsselten, sicheren Verbindung im Chrome (oben) und Firefox (unten).

Vorteile einer SSL-Verschlüsselung

Der offensichtliche Nutzen einer SSL-Verschlüsselung ist zugleich auch der größte Vorteil. Die Daten werden zwischen Browser und Server verschlüsselt übertragen, so dass Dritte nicht ohne Weiteres die Daten mitlesen können. Dies ist insbesondere beim Übertragen von personenbezogenen Daten relevant, also bei den bereits erwähnten Kontaktformularen, Login-Formularen, Online-Shops mit Bezahldaten, beim Onlinebanking usw.

Zur Förderung der SSL-Verschlüsselung hat Google vor einiger Zeit begonnen, die SSL-Verschlüsselung einer Seite als Rankingfaktor aufzunehmen. Konkret bedeutet das, dass eine verschlüsselte Seite eine bessere Position im Google-Suchergebnis bekommt als eine ansonsten gleichwertige Seite ohne Verschlüsselung. Alleine dieser Grund sollte also schon dafür sorgen, dass mehr und mehr Website-Betreiber gewillt sind, eine SSL-Verschlüsselung einzuführen.

Auch die Browser-Hersteller tun ihr Übriges, um die Vorteile von SSL bzw. die Nachteile unverschlüsselter Seiten hervorzuheben. Mit der Version 56 von Chrome, die in diesem Januar erscheint, werden alle Websites, die Daten unverschlüsselt übertragen, jedoch ein Formular zur Eingabe von Passwörtern oder Kreditkartendaten enthalten, als unsicher markiert.

Seiten ohne Verschlüsselung aber mit Passwort-Feldern werden mit einem Hinweis versehen.

Dies trifft zum Beispiel auf den Login zum WordPress-Backend zu, falls kein SSL aktiv ist. Hat man nun einen Mitgliederbereich oder einen Login für Abonennten und ist dieser nicht per SSL verschlüsselt, warnt bald der Browser vor der Benutzung, da das Passwort unverschlüsselt im Internet übertragen wird. Für das Vertrauen der Besucher ist dies nicht sonderlich förderlich.

Es ist zu erwarten, dass andere Browserhersteller nachziehen und Google selbst die Daumenschrauben auch noch weiter anziehen wird. Im Laufe der Zeit werden sicherlich irgendwann alle Seiten ohne Verschlüsselung mit einer deutlichen Warnung versehen. Deswegen ist es sinnvoll, mit dem Umstieg auf SSL-Verschlüsselung für alle eigenen Websites zeitnah zu beginnen.

Zu guter Letzt gibt es noch einen weiteren (kleinen) Vorteil von SSL-Verschlüsselung. Hin und wieder kommt der Eindruck auf, dass eine SSL-Verschlüsselung eine Sicherheitsmaßnahme gegen Hacker wäre und Angriffe auf die eigene Seite verhindern würde. Das ist falsch. Einzig und allein die Datenübertragung an den Besucher der Website ist verschlüsselt und damit sicher. Man schafft also Vertrauen beim Besucher, aber keine erweiterte Sicherheit für die Website oder den Server selbst. Ein Angreifer hat auch mit SSL-Zertifikat immer noch dieselben Möglichkeiten eines Angriffs wie auf eine Seite ohne SSL.

Es gibt allerdings eine winzig kleine Einschränkung hierzu. Brute-Force-Angriffe auf den WordPress-Login laufen weitestgehend automatisiert ab, d.h. es sitzt nicht wirklich eine Person vor einem Rechner und probiert Passwörter aus. Es sind eher automatische Scripte, die hunderte von Seiten mit massenweise Loginversuchen überziehen. Ist eine Seite, im Speziellen der WordPress-Admin-Bereich, SSL-verschlüsselt, so gibt es manche, schlecht programmierte Scripte, die damit nichts anfangen können. Somit sind diese Scripte nicht in der Lage, Login-Angriffe auf SSL-verschlüsselte Backends durchzuführen. Dies sollte aber niemals der Hauptgrund für die Einrichtung einer Verschlüsselung sein. Außerdem kann man erwarten, dass auch diese Scripte irgendwann besser werden und dieser Vorteil damit schwindet.

Welche Arten von SSL-Zertifikaten gibt es?

Um eine Verschlüsselung für eine Website einzurichten, benötigt man ein passendes SSL-Zertifikat. Dieses Zertifikat wird von einer externen Stelle ausgestellt (einer Zertifizierungsstelle). Das Zertifikat wird immer für eine oder mehrere Domains ausgestellt. So kann sichergestellt werden, dass die aufgerufene Seite auch tatsächlich diejenige Seite ist, die der Browser erwartet. Zwischen Browser und Website wird dann eine Sitzung eröffnet, um während dieser Sitzung mit einem gemeinsamen Schlüssel Daten verschlüsselt zu übertragen und auf der anderen Seite wieder entschlüsseln zu können.

Die Zertifikate werden von einer externen Zertifizierungsstelle vergeben, die beim Antrag eines Zertifikats diverse Angaben prüft (siehe unten). Nach Erteilung eines Zertifikats muss dieses auf dem Webserver installiert und eingebunden werden, damit ein Aufruf der Website über SSL möglich ist.

Dabei gibt es verschiedene Arten von SSL-Zertifikaten:

  1. SSL-Zertifikat mit Domain-Validierung (DV)
    Dies ist die einfachste Art von SSL-Zertifikaten. Bei einem solchen Zertifikat prüft die Zertifizierungsstelle nur, ob der Antragsteller das Recht hat, die Domain, für die das Zertifikat beantragt wurde, zu nutzen. Dies geschieht teilweise sogar automatisch (zum Beispiel bei Let’s Encrypt, siehe unten).
  2. SSL-Zertifikate mit Organisations-Validierung (OV)
    Neben der Prüfung, ob die angegebene Domain genutzt werden darf, werden auch weitere Unternehmensangaben geprüft. Diese werden im Zertifikat auch angegeben und können damit im Browser auch abgerufen werden (z.B. durch einen Klick auf das Schloss in der Adresszeile).
  3. SSL-Zertifikat mit Erweiterter Validierung (EV)
    Bei einem solchen Zertifikat werden viele Details des Antragsstellers geprüft, zum Beispiel auch die Existenz des Unternehmens selbst (durch Handelsregisterprüfung) usw. Eine solche Prüfung kann nur manuell erfolgen und dauert in der Regel einige Tage.

SSL-Zertifikate werden meist auf einer jährlichen Basis ausgestellt und verursachen damit auch jährliche Kosten. Abhängig von der gewählten Zertifikatsart und der Zertifizierungsstelle können sich diese Kosten dramatisch unterscheiden.

Wie zu erwarten ist, sind Zertifikate mit ausschließlicher Domain-Validierung am günstigsten, da hier auch nur geprüft wird, dass die Domain benutzt werden kann. Für die allermeisten Anwendungsfälle reicht diese Art des Zertifikats allerdings schon aus. Die Verschlüsselung ist in allen Arten von Zertifikaten gleich gut gegeben, wenn die Schlüssellänge entsprechend gleich gewählt wird.

Wer neben einer erfolgreichen Verschlüsselung noch mehr Vertrauen beim Anwender schaffen möchte, kann ein Zertifikat mit Organisationsvalidierung oder erweiterter Validierung wählen. Besonderes Merkmal der erweiterten Validierung ist auch, dass diese Zertifikate mit einer besonders hervorgehobenen Browserzeile angezeigt werden. Im Regelfall wird diese nicht nur mit einem grünen Schloss, sondern vollständig grün eingefärbt angezeigt. Damit ergibt sich nochmals eine optische Rückmeldung, die mehr Vertrauen beim Benutzer schafft. Banken haben oft diese Art von Zertifikat im Einsatz.

Erweitertes Zertifikat mit Anzeige des Zertifikat-Inhabers in der Adresszeile (Firefox).

Kostenlose SSL-Zertifikate mit Let’s Encrypt

Lange Zeit waren SSL-Zertifikate nicht sonderlich verbreitet und wurden nur bei besonders zu sichernden Verbindungen genutzt wie Onlineshops oder im Onlinebanking. Wie ich aber bereits erläutert habe, ist es für eigentlich jede Seite sinnvoll, eine Verschlüsselung einzurichten.

Hauptgrund für die Zurückhaltung sind sicherlich die Kosten. Auch wenn günstige Zertifikate nur etwa 20€ pro Jahr kosten, war der Wille zur Investition doch häufig gering.

Dies hat sich mit der Initiative von Let’s Encrypt geändert. Dies ist eine Organisation, die von vielen großen Internetunternehmen getragen und unterstützt wird. Sie bietet kostenlose SSL-Zertifikate mit Domain-Validierung an. Diese können automatisiert und mit wenigen einfachen Schritten auf Webservern eingerichtet werden.

Let’s Encrypt hat 2016 seinen Siegeszug angetreten und die Branche nachhaltig verändert. Damit man ein solches Zertifikat für seine eigene Website einrichten kann, muss der Hoster Let’s Encrypt unterstützen. Das tun längst nicht alle, insbesondere nicht viele große, Hoster. Allerdings ist die Branche so unter Druck geraten, dass mittlerweile auch große Hoster wie 1&1 und Strato zumindest ein kostenloses Zertifikat pro Kundenpaket anbieten. Dies ist dann kein Let’s Encrypt-Zertifikat, sondern von einer anderen Zertifizierungsstelle.

Woher das Zertifikat kommt, ist aber für die Qualität der Verschlüsselung nicht relevant. Ob von Let’s Encrypt oder einer anderen Zertifizierungsstelle: Domain-Validierung ist und bleibt Domain-Validierung.

Wer ein Zertifikat mit Organisations-Validierung oder mit erweiterter Validierung benötigt, kann allerdings nicht auf ein kostenloses Angebot hoffen. Aufgrund des manuellen Prüfaufwands sind diese Zertifikate weiterhin mit Kosten verbunden.

Bekannte deutsche Hoster mit Unterstützung für Let’s Encrypt sind All-Inkl und WebHostOne.

Einrichtung eines SSL-Zertifikats beim Hoster

Die manuelle Einrichtung eines Zertifikats auf dem Server bleibt den Hostingkunden in Deutschland im Allgemeinen erspart, dies übernimmt der Hoster für Sie. Die Bestellung oder Einrichtung eines Zertifikats erfolgt in der Regel über die Verwaltungsoberfäche des Hosters.

Da es hier dutzende von verschiedenen Oberflächen gibt und sich die Art der SSL-Einrichtung von Hoster zu Hoster stark unterscheidet, kann ich an dieser Stelle leider keine Schritt-für-Schritt-Anleitung geben.

Generell muss aber zuerst ein SSL-Zertifikat beantragt und auf dem Server eingerichtet werden, bevor eine Konfiguration der WordPress-Website beginnen kann.

Wie geht es weiter?

Im zweiten Teil der Artikel-Serie widme ich mich im Detail der Umstellung einer WordPress-Website auf SSL inklusive einer Schritt-für-Schritt-Anleitung.


Über Marc Nilius

Diplom-Informatiker, 20 Jahre IT- und Web-Erfahrung, 5 Jahre intensive WordPress-Erfahrung, Mit-Organisator WordPress Meetup Köln und WordCamp Köln 2016, Wapuu-Fan

3 Kommentare:

  1. Hallo Marc,
    Ich bin dabei eine neue WordPress-Website zu erstellen. Wann ist der beste Zeitpunkt die SSL-Verschlüsselung einzurichten – gleich zu Beginn?

    Susanne

    1. Hallo Susanne,
      wenn es eine neue Seite ist, ist es tatsächlich am besten, das Zertifikat direkt einzurichten. Dann musst du nachher nichts mehr umstellen. Am besten hast du das Zertifikat aktiv und auf der Domain eingerichtet, wenn du die WP-Installation startest. Dann kannst du diese direkt über https aufrufen und musst nachher nichts mehr beachten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Mit Absenden des Kommentars stimmen Sie der Verarbeitung und Speicherung der eingegebenen personenbezogenen Daten zu. Weitere Informationen dazu finden Sie in der Datenschutzerklärung.