Datensicherheit durch Verschlüsselung – WordPress von HTTP auf HTTPS umstellen

Was ist HTTPS?

Beim aufrufen von Webseiten wird eine Verbindung zwischen Browser und Server hergestellt. Über diese Verbindung werden Daten ausgetauscht, etwa die Inhalte der Webseite, aber auch Eingaben wie Suchanfragen, Logins oder Formularinhalte.

Um diese Inhalte zu schützen, müssen diese für die Übertragung verschlüsselt werden, die Inhalte können dann nicht von Unbefugten mitgelesen werden (aktueller Stand der Technik vorausgesetzt).

Zur Verschlüsselung verfügt der Server über ein SSL Zertifikat, Moderne Browser überprüfen dieses Zertifikat und warnen den Benutzer vor unsicheren oder fehlerhaften Zertifikaten.

Unsichere Webseite

Warum benötig man Verschlüsselung von Daten?

Die Verschlüsselung von Daten ist in vielen Fällen gesetzlich vorgegeben, insbesondere bei der Übertragung von personenbezogenen Daten gelten strenge Regeln.
Als Anbieter einer Webseite, auf der solche personenbezogenen Daten übermittelt werden müssen (z.B. Shop), kommt man nicht um die sichere Übertragung dieser Daten herum.

Allerdings kann eine Verschlüsselung, nicht nur bei Shops, Sicherheit auch für den Anbieter der Webseite bringen. Derzeit werden offenbar Anbieter ab- bzw angemahnt, weil sie Kontaktformulare oder auch Kommentarfunktionen auf unverschlüsselt übertragenen Seiten anbieten (siehe: shopanbieter.de).

Mitte 2014 kündigte Google auch an, dass HTTPS als Ranking Signal in die Wertung einer Webseite einfließt, somit ein Punkt für die SEO Interessierten.

Was benötigt man für die Verschlüsselung einer Seite?

Im Grunde benötigt man nur eins: ein SSL Zertifikat.
[asg-content-box boxcolor=”blue” boxtitle=”” boldtitle=”false” boxexpand=”false” showcontent=”false”]Wenn man die oben erwähnte Warnung umgehen möchte, dann benötigt man ein valides Zertifikat, ein selbst erstelltes ‘Self-Signed’ Zertifikat ist in diesem Fall nicht ausreichend.[/asg-content-box]

Zertifikate gibt es von unterschiedlichen Anbietern, zu unterschiedlichen Preisen, mit unterschiedlichen Merkmalen. Ein nahezu unüberschaubares Angebot mit einer sehr breiten Preisspanne – vergleichen und ein wenig recherchieren lohnt sich schnell.

Man sollte auch unbedingt abklären, ob die eigene Webseite ggf. eine spezielle Zertifikat Funktion benötigt (z.B. Versicherung, Wildcard), bevor man sich für ein Zertifikat entscheidet.

In der Regel erhält man ein Zertifikat auch beim Anbieter seiner Webseite – in diesem Fall ist die Server seitige Integration unter Umständen sehr einfach – hier lohnt es sich in jedem Fall, sich mit seinem Anbieter in Verbindung zu setzen, bevor man ein Zertifikat bei einem Dritten bestellt, und ggf. hinterher dieses Zertifikat nicht eingebunden bekommt.

Man muss natürlich auch mit dem Anbieter des Webhostings abklären, ob die Nutzung von HTTPS im Tarif enthalten ist. Betreibt man einen eigenen Server, dann entfällt dieser Schritt, da man die entsprechenden Voraussetzungen selbst schaffen kann.

Wenn der Server kein SNI (Server Name Indication) unterstützt, dann benötigt jede Domain bzw. HTTPS Webseite, eine eigene IP Adresse, auch diesen Punkt gilt es mit dem Webhosting Anbieter zu klären!

Umstellung von Wordpress auf die Nutzung von HTTPS

[asg-content-box boxcolor=”yellow” boxtitle=”” boldtitle=”false” boxexpand=”false” showcontent=”false”]Bevor die WordPress Umstellung vorgenommen werden kann, muss das Zertifikat auf dem Server installiert sein![/asg-content-box]

Prinzipiell bestehen 2 Möglichkeiten zur Nutzung von HTTPS:

  1. Umstellung der kompletten Seite
  2. Umstellung nur der Seiten, welche eine Verschlüsselung benötigen

Meiner Meinung nach, ist die Umstellung nur einzelner Seiten nicht mehr zeitgemäß und erfordert mehr Aufwand in der Einrichtung und Pflege.

Die Verschlüsselung von Seiten stellt Heutzutage kein Performance Problem mehr da – daher rate ich dazu, Punkt 1 zu verwenden, auf den sich auch diese Anleitung bezieht.

Die Umstellung von WordPress auf HTTPS erfolgt durch Anpassung der URL der Seite.

[asg-content-box boxcolor=”blue” boxtitle=”” boldtitle=”false” boxexpand=”false” showcontent=”false”]Während der Umstellung kann es passieren, dass die Webseite kurzfristig nicht – oder nicht ohne Warnung zu erreichen ist – daher am Besten den Wartungsmodus setzen – oder die Umstellung nicht gerade zur Haupt Nutzungszeit vornehmen.[/asg-content-box]

Diese Einstellung nimmt man im WordPress Backend unter Einstellungen > Allgemein vor.

Dort befinden sich 2 Eingabefelder, WordPress-Adresse (URL) und Website-Adresse (URL), hier ändert man http:// in https:// ab:

HTTP Einstellung:

HTTP Einstellung

HTTPS Einstellung:

HTTPS Einstellung

[asg-content-box boxcolor=”yellow” boxtitle=”” boldtitle=”false” boxexpand=”false” showcontent=”false”]Sollten diese Felder ausgegraut sein, dann ist diese Einstellung in der wp-config.php Datei konfiguriert worden – und muss in diesem Fall entweder dort aktualisiert werden, oder aber aus der wp-config.php entfernt werden.[/asg-content-box]

Nach dieser Umstellung, und ggf. löschen des Caches (Browser sowie Cache Plugins) sollte die Webseite über HTTPS zu erreichen sein, und somit die Übertragung verschlüsselt statt finden.

Webseiten Umleitung einrichten

Damit beim Aufruf der Webseite immer die Verschlüsselung genutzt wird, muss noch eine entsprechende Umleitung im Webserver eingerichtet werden.

Für den Fall, dass Apache als Webserver genutzt wird, kann diese Umleitung in einer .htaccess Datei im WordPress Verzeichnis definiert werden:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [R,L]
</IfModule>

Alternativ hierzu kann die Weiterleitung auch direkt in der Apache Konfigurationsdatei für die jeweilige Domain vorgenommen werden. Hierzu wird die Konfigurationsdatei wie folgt angepasst:

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName URL.de
   Redirect permanent / https://URL.de/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName URL.de
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
# etc...
</VirtualHost>

In beiden Fällen muss URL.de durch die entsprechende URL ersetzt werden, die DocumentRoot muss angepasst werden.

Im Falle der Nutzung von nginx als Webserver müssen die folgenden Zeilen in den {server} Block der jeweiligen Domain aufgenommen werden:

# HTTPS umleitung
if ($scheme != "https") {
    rewrite ^ https://$host$uri permanent;
}

Datenbank anpassen

Beim Erstellen eines Blog Beitrages oder einer Seite, werden eingefügte Bilder von WordPress mit einem hart kodierten Link in den Beitrag eingefügt.

Bereits bestehende Einträge müssen daher direkt in der Datenbank angepasst werden, damit beim Aufruf der Webseite keine Fehlermeldung über unsichere Inhalte ausgegeben wird.
Sollten vor der Umstellung auf HTTPS keine Beiträge vorhanden sein, kann der folgende Schritt ausgelassen werden!

[asg-content-box boxcolor=”red” boxtitle=”” boldtitle=”false” boxexpand=”false” showcontent=”false”]Folgende Arbeiten erfordern Änderungen an der Datenbank – daher unbedingt eine Sicherung der Datenbank anlegen![/asg-content-box]

Die Anpassung der Datenbank kann über einen SQL Administrationstool – wie phpmyadmin, oder die SQL Konsole – vorgenommen werden.
Folgende SQL Befehle müssen für die Anpassung ausgeführt werden:

wp_options SET option_value = replace(option_value, ‘http://URL.de’, ‘https://URL.de’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;
UPDATE wp_posts SET guid = replace(guid, ‘http://URL.de’,’https://URL.de’);
UPDATE wp_posts SET post_content = replace(post_content, ‘http://URL.de’, ‘https://URL.de’);
UPDATE wp_postmeta SET meta_value = replace(meta_value, ‘http://URL.de’, ‘https://URL.de’);

Auch hier bitte wieder URL.de durch die entsprechende URL ersetzen.

UPDATE:

Obwohl die vorgenannte Suchen und Ersetzen Option in MySQL funktioniert, werden serialisierte Werte in diesem Fall gebrochen, daher ist diese Methode nicht für alle Fälle geeignet.

Bitte benutzt ein Skript zur Anpassung der Datenbank, z.B. das DATABASE SEARCH AND REPLACE Skript von interconnectit.com oder ein entsprechendes Plugin – wie Better Search Replace um die URL in der Datenbank korrekt zu ersetzen!

Seitenkontrolle

Zum Abschluss der Umstellung auf HTTPS werden nun die Seiten kontrolliert, beim Aufruf sollte der Browser nun folgenden Status anzeigen:

Webseite sicher

Für den Fall, dass hier kein grünes Schloss angezeigt wird, werden unter Umständen noch Ressourcen von nicht verschlüsselten URLs geladen.

Durch Anklicken des Schlosses kann der Grund heraus gefunden werden, warum die Webseite als nicht sicher bewerte wird, oftmals handelt es sich um Ressourcen, die von nicht verschlüsselten Quellen geladen werden. Diese unsicheren Ressourcen können mittels der Entwickler Konsolen der Browser identifiziert und durch sichere Aufrufe ersetzt werden.

Unsichere Webseiten Inhalte können auch durch einen SSL-Check bei Jitbit gefunden werden.

Cloudflare User aufgepasst!

Cloudflare User können ein eigenes Zertifikat nur dann nutzen, wenn Sie einen Business oder Enterprise Plan für die Webseite benutzen – die Kosten hierfür fangen bei 200 USD pro Monat an.

Cloudflare User aufgepasst

Im Gratis oder Pro Plan besteht die Möglichkeit ein gratis Zertifikat zu nutzen, in diesem Fall ist die Verbindung Browser -> Cloudflare verschlüsselt, die Verbindung Cloudflare -> Server aber nicht (Flexible SSL). Alternativ kann man auch einen Modus wählen, in dem dann auch die Verbindung zum Server verschlüsselt ist (Full SSL oder Full SSL (strict)).

Cloudflare SSL Optionen

[asg-content-box boxcolor=”yellow” boxtitle=”” boldtitle=”false” boxexpand=”false” showcontent=”false”]In allen Fällen endet die Verschlüsselung aus Browser Sicht immer bei Cloudflare![/asg-content-box]

Meiner Einschätzung nach, ist dieses Vorgehen mit dem deutschen Datenschutz nicht konform zu realisieren. Cloudflare hat hier die Möglichkeit, an die unverschlüsselten Daten zu kommen. Hier sollte man sich unbedingt vor der Einrichtung weitergehend infomieren. Allerdings verstößt vermutlich schon die bloße Nutzung von Cloudflare als CDN Anbieter gegen den deutschen Datenschutz, da zu Statistik Zwecken personenbezogene Daten, wie IP Adressen, gespeichert werden.

(Beitragsbild: Pixabay)

Michael Kokott