blog | wordpress auf https umstellen

Nein, ausschlaggebend für diesen Blogpost ist nicht die Ankündigung von Google zukünftig mit SSL abgesicherte Seiten im Ranking weiter nach vorne zu bringen sondern schlicht und ergreifend: Weil ich es kann!
Eigentlich spielte ich schon lange mit dem Gedanken alle von mir technisch betreuten Webseiten mit einem SSL-Zertifikat zu versorgen. Ich mochte aber nicht unbedingt (viel) Geld für solche Zertifikate auszugeben, gleichzeitig wollte ich aber auch keine selbsterstellten Zertifikate oder Zertifikate von einer CA, welche nicht von den meisten Betriebssystemen und/oder Browsern von Hause aus unterstützt werden, einsetzen. Schließlich bin ich bei StartSSL gelandet, die einjährige, verlängerbare Zertifikate für kein Geld anbieten. Aber ich will nicht erklären, wie ich mir Zertifikate erstellen lasse (darauf geh ich vielleicht in einem seperaten Artikel ein), sondern wie ich eine laufende WordPress-Installation auf HTTPS umstelle.

Wenn man mit der Suchmaschine seines Vertrauens nach der HTTPS-Umstellung für WordPress sucht, dann gewinnt man schnell den Eindruck, dass dafür ein WordPress-Plugin notwendig sei – es gibt da einige. So dachte auch ich und probierte ein/zwei aus. Irgendwie funktioniert das auch – aber eben nicht vollständig sondern nur irgendwie. Ich aber will es richtig machen und habe mich daran gemacht. Und so geht das:

Umstellung der Konfigurationsdatei für den Webserver

Für diesen Blog verwende ich Apache2 als Webserver und ich habe bereits für die WordPress-Installation eine Apache-Konfigurationsdatei


        ServerName controlc.de
        ServerAlias www.controlc.de
        DocumentRoot /var/www/meinblog
        ErrorLog /var/log/apache2/eigeneslogfile_error.log
        CustomLog /var/log/apache2/eigeneslogfile_access.log combined

Damit jegliche HTTP-Anfrage sofort und ohne Rückfrage in HTTPS umgewandelt werden muß, müssen folgende Änderungen vorgenommen werden.


        ServerName controlc.de
        ServerAlias www.controlc.de

        # Force http redirect to https
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

        ErrorLog /var/log/apache2/eigeneslogfile_error.log
        CustomLog /var/log/apache2/eigeneslogfile_access.log combined



    ServerName controlc.de
    ServerAlias www.controlc.de
    SSLEngine On
    SSLCertificateFile /etc/ssl/certs/eigenes_zertifikat-cert.pem
    SSLCertificateKeyFile /etc/ssl/private/eigenes_zertifikat-key.pem
    SSLCertificateChainFile /etc/ssl/certs/startssl-sub.class1.server.ca.pem

    DocumentRoot /var/www/meinblog
    ErrorLog /var/log/apache2/eigeneslogfile_error.log
    CustomLog /var/log/apache2/eigeneslogfile_access.log combined

Danach der obligatorische Reload des Webservers.

Anpassung der WordPress-URL via phpmyadmin

Jetzt muß die WordPress-URL auf HTTPS umgestellt werden, denn intern arbeitet WordPress mit der Variablen WP_SITEURL, welche in den Einstellungen/Allgemein in den Optionen WordPress-Adresse (URL) und Seiten-Adresse (URL) zu konfigurieren ist, wobei man nur zweiteres bearbeiten kann. Die WordPress-Adresse (URL) ist fest in der Datenbank verankert. Zum Bearbeiten der Datenbank nutze ich phpmyadmin, weil ich zu faul und zu unbeleckt in der mysql-Konsole bin. Im phpmyadmin gehen wir in der WordPress-Datenbank in die Tabelle wp_options und editieren den ersten Eintrag der Tabelle, welcher mit dem option_name „siteurl“ bezeichnet ist und korrigieren den Eintrag auf HTTPS.

Anpassen der WordPress-Konfigurationsdatei

Oft findet man im Netz den Hinweis, dass die Zeile

define('FORCE_SSL_ADMIN', true);

in die WordPress-Konfigurationsdatei wp-config.php einzutragen sei. Es gibt auch einige Plugins, die aufgrund dieser Konfigurationszeile in Ihrem Plugin auf HTTPS umstellen. Das muß man von Fall zu Fall unterscheiden. Eigentlich (und da haben wir schon das Problem, denn „eigentlich“ ist ein Lügewort) sollte alles mit der Umstellung der Webserver-Datei und der WordPress-URL gelöst sein. Aber schaden kann diese Zeile ja auch nicht :).

Überprüfen des Webseitenquellcodes

Jetzt ist es an der Zeit sich seine Webseite im Browser anzuschauen und zu überprüfen, ob beim Aufruf der URL automatisch auf HTTPS geschwenkt wird. Ebenso sieht man in den verschiedenen Browsern an dem URL-Icon links neben der URL, ob der Browser mit der Webseite inkl. Zertifikat zufrieden ist. Eine Erklärung findet sich z.B. in der Google Chrome Hilfe.
Zur näheren Analyse schaut man sich dann am besten den Quelltext der Webseite im Browser an – jeder Browser handhabt es etwas anders. Im Google Chrome reicht ein Rechtsklick auf einen freien Bereich der Webseite mit der Auswahl „Seitenquelltext anzeigen“. Hier kann jetzt nach dem String „http://“ gesucht werden und man erkennt sofort, ob alle URL-Angaben auf die eigene Domain umgeschrieben werden.
Ebenso kann man mit der Webseite Why no Padlock? die Webseite extern prüfen.
Sollte aus irgendeinem Grund an einer Stelle im Quelltext kein HTTPS davorstehen, dann muß man in die Einzelfall-Analyse gehen – meist betrifft es ein WordPress-Plugin, was im Zweifelsfalle nur der Autor des Plugins beheben kann.

Anpassung der Artikel via phpmyadmin

Ich mußte feststellen, dass in alten Artikeln Bilder und Verweise, welche auf meinem Webserver liegen, in den Artikel als absolute Links, also mit http://controlc.de/… verankert sind. Um dies zu ändern nutze ich wieder phpmyadmin als Oberfläche für mysql. In der WordPress-Datenbank, in der Tabelle wp_posts wählte ich den Reiter SQL aus und gab dort in die Abfragemaske

UPDATE wp_posts SET post_content = REPLACE (  post_content,  'http://controlc.de/',  '/');

ein. Damit wird in jedem Artikel die absolute URL in eine relative umgewandelt und ich sollte in Zukunft vor Änderungen sicher sein, solange ich die Datenstruktur in Ruhe lasse.

Schreibe einen Kommentar

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