WBCE CMS Blog

Umstieg auf SSL - so gehts

Florian Meerwinck, 27.03.2018

Nicht nur aufgrund der DSGVO ist es Zeit, die eigene Website auf eine sichere Verbindung umzustellen. Der Aufwand dafür hält sich glücklicherweise in Grenzen.

Bei den meisten Webhostern sind inzwischen SSL-Zertifikate und/oder die komfortable Einbindung von kostenlosen Let's Encrypt-Zertifikaten verfügbar. Je nach Anbieter muss diese Option einfach nur aktiviert werden, oder ein Upgrade auf ein nächsthöheres Hostingpaket ist erforderlich; die Mehrkosten sind aber i.d.R. sehr überschaubar und betragen nur wenige Euro im Monat. Man muss also längst nicht zum Premium-Zertifikat für 50 €/Monat greifen, wenn nur eine ganz normale, einfache Website sicher übertragen werden soll.

Ist das Zertifikat gebucht und die SSL-Verschlüsselung aktiviert, sind nun noch einige Schritte auszuführen, damit die bestehende Website zukünftig über eine sichere Verbindung ausgeliefert wird.

Zu beachten ist, dass im Zuge der Umstellung die Website je nach Arbeitstempo einige Minuten fehlerhaft angezeigt wird, die Umstellung sollte also nicht gerade zur Hauptnutzungszeit erfolgen.

Bevor Du loslegst: Bitte lies Dir erst einmal die gesamte Seite durch und beachte den abschließenden Hinweis/Haftungsausschluss!

1.) Anpassung der config.php

Das ist der einfachste Teil. Stelle eine FTP-Verbindung zum Server her, öffne die config.php zum Bearbeiten und ersetze alle Vorkommnisse von http://(www.)deinedomain.tld* durch https://(www.)deinedomain.tld* und speichere die Änderungen.

2.) Anpassung von absoluten Verlinkungen in der Datenbank

Das ist etwas knifflig. Du brauchst die Zugangsdaten für die Datenbank (Tipp: die stehen in der config.php), ein Tool, um auf die Datenbank zuzugreifen (z.B. phpMyAdmin oder Adminer) und einen Editor, um die Datenbankdaten zu bearbeiten (z.B. Notepad++).

Der Reihe nach.

  • Bei den meisten Webhostern ist phpMyAdmin auf dem Server installiert. Den Link findest Du im Administrationsbereich Deines Webhosters. In dem Tool Adminer, das nur aus einer einzigen PHP-Datei besteht, die auf den Server zu kopieren und dort aufzurufen ist (deinedomain.tld/adminer.php) ist es nach meinem Dafürhalten noch einfacher. Ich erkläre hier trotzdem das Vorgehen anhand der Bloatware phpMyAdmin.
  • Nach der Anmeldung an phpMyAdmin musst Du ggf. die Datenbank auswählen, die Du für Deine umzustellende Website nutzt. Klicke dann in der Menüleiste auf "Exportieren" und dann auf "Angepasst".
  • Wenn Du die Datenbank noch für weitere Webseiten oder Webanwendungen benutzt, ist es sinnvoll, nur die Tabellen zu exportieren, die zur umzustellenden Webseite gehören. Diese kannst Du im Auswahlfeld selektieren. Achte darauf, sowohl die Tabellen als auch die darin enthaltenen Daten zu exportieren!
  • Setze das Häkchen unter "Befehle hinzufügen" bei "DROP TABLE IF EXISTS "  - sonst lässt sich später der Dump (also der Abzug der Datenbankdaten, den wir hier gerade erstellen) nicht so ohne weiteres wieder einspielen.
  • Klicke auf OK. Nach kurzer Zeit erscheint ein Speichern-Dialog für eine SQL-Datei. Speichere diese an einem Ort, wo Du sie wiederfindest.
  • Starte nun einen Quellcode-Editor wie z.B. Notepad++. MS Word oder der "Windows-Editor" notepad.exe sind nicht geeignet! Öffne damit die soeben erzeugte und heruntergeladene SQL-Datei.
  • Rufe den Suchen & Ersetzen-Dialog des Editors auf  (Tastaturkürzel in Notepad++ ist z.B. Strg-H). Trage ins Suche-Feld http://(www.)deinedomain.tld* und ins Ersetze-durch-Feld https://(www.)deinedomain.tld* ein, stelle sicher, dass die Ersetzung auf das gesamte Dokument angewendet wird, und starte den Vorgang. Je nach Umfang der Seite und installierten Modulen werden von einer knappen Handvoll bis ein paar hundert Vorkommnisse ersetzt.
  • Speichere die geänderte Datei unter einem anderen Namen, damit Du ein funktionierendes Datenbankbackup hast, falls wider Erwarten doch etwas schief geht.
  • Wechsele nun zurück in phpMyAdmin und klicke dort auf "Import". Klicke auf "Durchsuchen" und wähle die soeben angefertigte neue Datei mit den Korrekturen aus und klicke auf "OK". Wenn alles gut geht, erscheint nach kurzer Zeit eine Erfolgsmeldung.
    Kommt es zu Fehlern, überprüfe,  was genau moniert wird. Häufige Problemursachen: DROP TABLE wurde beim Export nicht gesetzt, oder die SQL-Datei ist zu groß und kann nicht verarbeitet werden. Versuche in letzterem Fall, die Datei als komprimierte zip-Datei hochzuladen und/oder erstelle einen neuen Dump mit weniger Tabellen und wiederhole die o.g. Schritte.

3.) Überprüfung von ggf. im Template und/oder einzelnen Seiten eingebundenen Scripten, Iframes usw.

Die Seite sollte jetzt bereits beim direkten Aufruf von https://(www).deinedomain.tld* korrekt ausgeliefert werden. Falls aber Stylesheets noch nicht geladen werden und/oder statt des grünen Vorhängeschlosses ein Warnsymbol in der Adresszeile des Browsers angezeigt werden, werden noch Inhalte über eine nicht gesicherte Verbindung geladen.

  • Stelle (ggf. noch einmal) eine FTP-Verbindung zu Deiner Webseite her und wechsle ins Template-Verzeichnis des aktuell auf der umgestellten Webseite verwendeten Templates (also /templates/deintemplate) und öffne die index.php mit Notepad++ o.ä.
  • Suche alle Vorkommnisse von http:// - so viele werden es ncht sein. Kandidaten sind Google Fonts (Verlinkung auf https://fonts.google.com/usw ändern), extern eingebundene JavaScripte und hart verdrahtete lokale Stylesheets, Scripte o.ä. - all diese Verweise müssen auf https:// umgestellt werden. Überprüfe auch die Stylesheets (editor.css, template.css), gerade bei älteren Templates werden in den @import-Anweisungen die Google-Fonts hier noch über http statt https eingebunden.
  • Wenn Du auf Deiner Seite irgendwo externe Inhalte in einen Iframe lädst (Wrapper-Modul), ist dies ab sofort nur noch möglich, wenn auch die betreffenden externen Seiten über https ausgespielt werden. Merke: https in http einbinden geht, http in https einbinden geht nicht. Punkt. Ohne Ausnahme!

4.) Weiterleitung auf https in der .htaccess-Datei

Zuguterletzt solltest Du noch in der .htacess-Datei im Wurzelverzeichnis (Root) Deiner Webseite eine Weiterleitung der alten http-Adresse auf die neue https-Adresse einrichten. Es gibt diverse Variationen, wie so etwas umgesetzt werden kann, z.B. so:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^deinedomain\.tld$ [NC,OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://deinedomain.tld/$1 [R=301,L]
</IfModule>

Das ist möglicherweise aber auch gar nicht erforderlich, wenn sich über das Administrationssystem des Servers (z.B. Confixx, Plesk oder das vom Provider bereitgestellte Tool) die Option "https erzwingen" o.ä. aktivieren lässt.

Und das war es schon!

Natürlich klingt das alles erst einmal furchtbar kompliziert und gefährlich. Wenn Dir das ganze zu heikel ist, gibt es im WBCE-Forum Unterstützung oder auch sicherlich die Bereitschaft, die Umstellung gegen einen geringen Oblus für Dich vorzunehmen. Mit etwas Routine ist das aber wirklich eine Sache von wenigen Minuten.

Bitte habe Verständnis, dass ich dennoch darauf hinweise, diese Anleitung nach bestem Wissen und Gewissen verfasst zu haben, und keine Haftung für eventuelle Schäden übernehme. Die Umsetzung der o.g. Schritte erfolgt auf einges Risiko und sollte gerade bei ungeübten Benutzern zunächst anhand einer Testwebseite durchgespielt werden.

* Das hier genannte (www.)deinedomain.tld musst Du natürlich durch die richtige Adresse Deiner Website ersetzen!

Zurück