WordPress verschlüsselte Verbindung erzwingen

Um in WordPress verschlüsselte Verbindungen erzwingen zu können ist kein Hexenwerk notwendig. Doch das Plugin WP Super Cache kann Probleme bereiten

Zu meiner Freude bietet mein Webhoster all-inkl.com für mein Paket die kostenfreie Option den Zugang um ein eigenes SSL-Zertifikat zu erweitern. Ich habe mich vorerst für ein Zertifikat von Startssl.com entschieden, welches später von einem Zertifikat der Initiative Let’s Encrypt abgelöst wird. CSR wurde lokal auf einem Debian Jessie selbst erstellt. Bis auf den typische Chaincachingbug in Chrome (Fehlermeldung SHA-1) ist das Zertifikat valide. Siehe dazu auch den letzten Screenshot.

WordPress Admin

Nach der Installation des Zertifikats auf dem Server sollte im Administrationsbereich Einstellungen > Allgemein die URLs

  • WordPress-Adresse (URL)
  • Website-Adresse (URL)

von dem Protokoll HTTP auf HTTPS geändert und abgespeichert werden.

wp-config.php

Die Datei wp-config.php sollte aus Sicherheitsgründen immer außerhalb des Installationsordners von WordPress liegen. Das entspricht in der Verzeichnishierarchie bei einer Installation in dem Verzeichnispfad /var/www/wordpress dem Ordner /var/www/. WordPress schaut als Standard immer nach der Datei wp-config.php in einem Ordner eine Ebene höher. Hierzu muss nur die Datei aus dem Installationsordner verschoben werden.

In der Datei wp-config.php muss nun der Loginbereich und der Administrationsbereich nur noch per TLS erreichbar gemacht werden:

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

.htaccess

Damit nur noch ein verschlüsselter Kontakt des Blogs möglich ist, wird jede aufgenommene unverschlüsselte Verbindung automatisch weitergeleitet. Durch den HTTP-Statuscodes 301 wird jedem Besucher, auch Google, mitgeteilt, dass es sich um einen dauerhaft verschobenen Inhalt handelt. Google wird nach einige Zeit die Links in seiner Suchmaschine selbst anpassen. Google belohnt die Blogger mit einem besseren Pagerank.

Um dies zu erreichen, wird die Datei .htaccess im Installationsordner von WordPress nach einem Backup um die folgenden drei Zeilen ergänzt. Diese müssen gleich am Anfang der Datei eingefügt werden.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

.htaccess WP Super Cache und HTTPs

Wer das Plugin WP Super Cache benutzt muss in der Datei .htaccess nun weitere Änderungen vornehmen.
Jedes vorkommen einer Zeile mit RewriteCond %{DOCUMENT_ROOT} muss um die volle Pfadangabe der WordPressinstallation erweitert werden.

Original:

RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f

Neu:

RewriteCond $VOLLERINSTALLATIONSPFAD/%{HTTP_HOST}/%{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f

Ein Beispiel

$VOLLERINSTALLATIONSPFAD entspricht dann als Beispiel: /var/www/wordpress oder /var/www/html/meintollesblog:

RewriteCond /var/www/wordpress/%{HTTP_HOST}/%{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f

oder

RewriteCond var/www/html/meintollesblog/%{HTTP_HOST}/%{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f

Nach der Änderung sollte einmal komplett der Cache geleert werden.

Nun funktioniert das Caching und das Blog ist nur noch per HTTPS erreichbar.

Änderung der URLs für die Medien

Da ich auch responsive Images in meinem Blog nutze, musste ich auch hier die URLs, welche schon in meinen Beiträgen verknüpft sind in der Datenbank umschreiben.

Der Ort der Mediendateien hatte sich von http://got-tty.org/media auf https://got-tty.org/media geändert.
Hier nimmt man nach einem Datenbankbackup die Änderung per SQLstatement vor, oder mithilfe des Plugins Better Search Replace

Alles verschlüsselt?

Es müssen auch alle extern geladenen Quellen eine verschlüsselte Verbindung besitzen. Bei mir ist nur noch meine Installation von Matomo, ehemals Piwik und Bloggerei.de geblieben. Topblogs.de musste leider aufgrund fehlender verschlüsselter Unterstützung gehen.
Die Seite SSLCheck hilft unverschlüsselte Verbindungen auf der Website zu finden und Nutzer von Firefox werden hier von der Konsole unterstützt Ctrl+Shift+K.

WordPress TLS only auf got-tty.org

SSL Servertest für got_tty.org / ssllabs.com

SSL Servertest für got_tty.org / ssllabs.com ( Klick)

Auf eine stabile und sichere Verbindung

3 Gedanken zu „WordPress verschlüsselte Verbindung erzwingen“

  1. Pingback: Auf Nummer sicher – https für den Blog – Hanno Köhncke

Kommentare sind geschlossen.