[Tutorial] WordPress: SSL Verschlüsselung für Admin und Login Seiten in Zusammenspiel mit Pound (Loadbalancer & Reverse Proxy)
Hallo zusammen,
vor einigen Tagen stand ich vor der Herausforderung, wie ich die Admin- und Loginseiten meines WordPress Blogs automatisch über SSL verschlüsselt ausgeben lasse.
Normal ist dies kein Problem und durch einen kleinen Eingriff in die Konfig getan. Da ich allerdings Pound einsetze, war dies mit etwas mehr Aufwand verbunden.
Zur Info: Pound ist ein ein Loadbalancer und Reverse Proxy, der alle HTTP und HTTPS Sitzungen die aus dem Netz kommen terminiert und dann selbstständig eine Verbindung ins Backend, bzw. zum der Server auf dem die gewünschte Homepage läuft, aufbaut. Hierzu liest Pound den Header der Pakete aus, schaut welche Webseite angefordert wurde und baut dann eine eigene Verbindung zu dieser auf. Dies hat u.a. den Vorteil, dass man mehrere verschiedene Domains unter einer IP hosten kann. Außerdem beherrscht Pound Loadbalancing und seit Version 2.6 kann man auch verschiedene SSL Zertifikate für verschiedene (Sub-) Domains nutzen. Pound wählt dann je nach angeforderter Seite das richtige Zertifikat aus.
Pound Pakete gibt es für so gut wie jede Linux Distribution. Anfänglich lief Pound dank optware noch direkt auf meinem DD-WRT Router. Mittlerweile habe ich den Service allerdings auch auf einen Raspberry umgezogen. Falls jemand hierzu ein eigenes Tutorial oder mehr Infos wünscht, einfach einen Kommentar hinterlassen 😀
Zurück zur SSL Konfig. Zuerst bearbeiten wir die Datei wp-config.php. Diese sollte im root Verzeichnis von WordPress liegen. In dieser Datei fügen wir am Ende folgenden Code ein:
define(‚FORCE_SSL_LOGIN‘, true);
define(‚FORCE_SSL_ADMIN‘, true);
if ($_SERVER[‚HTTP_X_FORWARDED_PROTO‘] == ‚https‘)
$_SERVER[‚HTTPS‘]=’on‘;
Damit Pound den Redirect auch richtig versteht und keine Endlosschleife entsteht, müssen wir nun noch die Konfiguration von Pound anpassen. Hierzu die Datei /etc/pound/pound.cfg bearbeiten.
An der Stelle für die HTTP Hosts fügen wir folgendes ein:
## HTTP listening ports
ListenHTTP
HeadRemove „HTTP_X_FORWARDED_PROTO“
HeadRemove „X_FORWARDED_PROTO“
AddHeader „HTTP_X_FORWARDED_PROTO: http“
AddHeader „X_FORWARDED_PROTO: http“
An der Stelle für die HTTPS Hosts fügen wir folgendes ein:
## HTTPS listening ports
ListenHTTPS
HeadRemove „HTTP_X_FORWARDED_PROTO“
HeadRemove „X_FORWARDED_PROTO“
AddHeader „HTTP_X_FORWARDED_PROTO: https“
AddHeader „X_FORWARDED_PROTO: https“
Jetzt noch einmal Pound neustarten:
sudo /etc/init.d/pound restart
Und das wars!
WordPress sollte nun automatisch bei jedem Login und bei jedem Zugriff auf die Adminseiten automatisch auf eine gesicherte SSL Verbindung umleiten.
Die Änderungen an der WordPress-Config kann naürlich auch jeder durchführen, der Pound nicht nutzt. Dann entfallen die Schritte für Pound, allerdings muss der Server bzw. die Webseite auch generell über SSL erreichbar sein, sonst läuft der Redirect ins leere.
Wie immer gilt, falls dir das Tutorial gefallen hat würde ich mich über einen kleinen Kommentar freuen – das gleiche gilt natürlich auch für Kritik oder Verbesserungsvorschläge 😀 Natürlich dürft ihr auch gerne euren Adblocker auf Kopfkino deaktivieren und den kleinen Banner am Ende des Posts klicken – ist aber natürlich absolut freiwillig 😉 Die Werbung ist dezent gehalten und es gibt keine nervigen Flashbanner oder ähnliches 🙂 Einnahmen kommen vollständig neuen Projekten zu Gute 😀
Gruß iro
Quellen:
I appreciate, cause I found exactly what I was looking for.
You’ve ended my 4 day long hunt! God Bless you man.
Have a great day. Bye
Thx mate, appreciate your response 🙂
Hallo,
Was bedeutet in deiner Konfiguration eigentlich die Zeile“X_FORWARDED_PROTO“
Kannst du mir das kurz erklären.
Danke
Viele Grüße