it-swarm.com.de

Upgrade auf SSL Breaks Admin Dashboard

Ich verwende derzeit eine Instanz von WordPress, Version 4.5.3, auf einem Amazon EC2-Server. Es verwendet:

  • CentOS 7 (OS) und hat SELinux aktiviert.
  • Server führt Apache mit mod_security und mod_evasive aus
  • PHP 5.6.24

Der Name der Site ist The Rambling New Yorker .

Vor kurzem habe ich ein Upgrade auf SSL mit Let's Encrypt durchgeführt. Der Prozess war ziemlich einfach und ich habe jetzt das Front-End gesichert. Ich habe sogar ein Plugin installiert, das Nicht-SSL-Datenverkehr auf die sichere Site umleitet.

Leider ist das Admin-Dashboard defekt . Sobald ich umgeschaltet hatte, sah es so aus:

 WordPress SSL Problem 

Ich habe die URLs (in der Datenbank, nicht über das Dashboard) auf die SSL-Version geändert und " SSL-Admin erzwingen " in der Konfigurationsdatei aktiviert. Die Anmeldeseite ist in Ordnung.

Die Umschaltung hat einmal funktioniert, als ich alle Plugins deaktiviert habe. Wenn ich sie nacheinander wieder aktiviere, glaube ich, dass WP Super Cache das Problem ist, aber als ich nach dem Löschen des Plugins umgeschaltet habe, ist das Problem erneut aufgetreten.

Durch Deaktivieren von mod_security wird das Problem behoben, aber die Apache-Fehlerprotokolle enthalten keine hilfreichen Fehlermeldungen, sodass ich nicht weiß, was es stört.

Der einzige Hinweis ist, dass Anfragen nach load-styles.php und load-scripts.php einen 403 error zurückgeben:

 WordPress SSL Problem #2 

Diese Dateien haben jedoch denselben Besitz (Apache:apache) und dieselben Berechtigungen wie alle anderen Dateien im Ordner wp-admin (644). Also bin ich ahnungslos. Hat jemand eine Idee, was die zugrunde liegende Ursache sein könnte?

Update - 8/26
Aufgrund einiger Nachforschungen kam ich zu dem Schluss, dass der in den Kommentaren unten angegebene Fehler PHP damit zusammenhängt, dass keine bestimmte Erweiterung - mbstrings - installiert ist. Leider habe ich bei der Installation versucht, die falsche Version zu installieren, dann einige Pakete deinstalliert, das Remi-Repository hinzugefügt und dann einige Pakete installiert, die nicht ganz den alten entsprachen. Auf meinem Server wird PHP 5.6.24 ausgeführt, aber einige der Pakete stammen möglicherweise aus 5.4. WordPress funktioniert nicht mehr. Nach einigem Hin und Her habe ich den Server auf den AMI zurückgesetzt, der erstellt wurde, bevor ich mich auf mein SSL-Abenteuer begab.

Ich werde versuchen, dieses Wochenende erneut auf SSL zu migrieren. Wenn das Problem erneut auftritt, bin ich wieder hier. Wenn nicht, schreibe ich eine Antwort. In beiden Fällen werde ich eine Änderung der Datenbank nach Möglichkeit vermeiden.

Update 2 - 27.08.
Die geheime Zutat war das Paket php56u-mbstrings. Nachdem ich es installiert hatte, funktionierte das Skript in der Befehlszeile einwandfrei, obwohl die GUI weiterhin AJAX Fehler verursachte und nur drei Tabellen durchsuchte. Das CLI-Skript ersetzte 31 Instanzen von http://www.ramblingnewyorker.com durch https://www.ramblingnewyorker.com . Das Problem besteht jedoch weiterhin. Es erschien von dem Moment an, als die sichere Site eingerichtet wurde. Durch Deaktivieren von mod_security oder Hinzufügen der folgenden Zeilen zu meiner ssl.conf-Datei wird das Problem behoben:

<LocationMatch "/wp-admin/load-scripts.php">
    <IfModule mod_security2.c>
        SecRuleEngine Off
    </IfModule>
</LocationMatch>
<LocationMatch "/wp-admin/load-styles.php">
    <IfModule mod_security2.c>
        SecRuleEngine Off
    </IfModule>
</LocationMatch>

Aus Sicherheitsgründen habe ich diese Zeilen auskommentiert. Dies scheint irgendwie mit mod_security zu tun zu haben, aber ich kann keine einzige Fehlermeldung in den Apache-Protokolldateien finden.

3
Mike P

Problem gelöst! Die Ursache stellte sich einfach als tot heraus. Eine der mod_security-Regeln hat das Laden des Admin-Dashboards gestört. Ich habe dies früher nicht bemerkt, weil ich das SSL-Fehlerprotokoll nicht überprüft habe (weil ich nicht wusste, dass es dort war). Sobald ich dies tat und die Regel für die Dateien, die nicht geladen wurden, deaktivierte, war alles in Ordnung.

2
Mike P

Ich bin nicht sicher, welches Plugin Sie verwenden, um SSL zu erzwingen, aber ich würde es deaktivieren, um Konflikte mit der unten aufgeführten möglichen Lösung zu vermeiden.

Gehen Sie folgendermaßen vor, um sicherzustellen, dass Sie alle Ihre URLs auf HTTPS aktualisiert haben:

  1. Gehen Sie und laden Sie Interconnect ITs Datenbank Search & Replace Script hier herunter
  2. Entpacke die Datei und lege den Ordner (Search-Replace-DB-master) ab, in dem dein WordPress installiert ist (das Stammverzeichnis) und benenne den Ordner in replace um ( screenshot )
  3. Navigieren Sie zu dem neuen Ordner, den Sie in Ihrem Browser erstellt haben (z. B .: https://www.ramblingnewyorker.com/replace) und Sie sehen das Suchen/Ersetzen-Tool
  4. Bis zu diesem Punkt sollte es ziemlich selbsterklärend sein: Geben Sie Ihren HTTPS-Link in das Feldsearch for…und den neuen HTTPS-Link in das Feldreplace with…ein

Sie können auf die Schaltfläche Probelauf unter Aktionen klicken, um zu sehen, was ersetzt wird, bevor Sie das Skript ausführen. Wenn Sie fertig sind, müssen Sie den Ordner /replace/ entfernen.

Auf diese Weise können Sie sicherstellen, dass Ihre Website über die neuen SSL-Links (https://) vollständig ausgeführt wird. Wenn Sie immer noch Probleme haben, lassen Sie es mich wissen. So können wir den nächsten Schritt herausfinden.