|
Die Zeiten ändern sich ständig, und unsere Nachfrage nach sicherer Kommunikation steigt. Auf Discuz X3 steht, dass https unterstützt wird, also habe ich nach dem Erhalt des SSL-Zertifikats SSL auf der Website hinzugefügt, sobald ich es erhalten hatte. Aber nachdem ich es hinzugefügt hatte, stellte ich fest, dass viele Orte keine HTTPS-Links verwendeten, also begann ich, den Discuz-Quellcode zu überprüfen, um zu sehen, was schiefgelaufen war. 1. SSL-Zertifikat & KonfigurationZunächst einmal muss man für die Aktivierung von SSL ein Zertifikat haben, oder? Ob es von einer regulären CA ausgestellt oder von einem selbst unterschrieben wurde, kann man nicht mit Sicherheit haben. Wenn nicht, bewirb dich zuerst dafür. (Bitte google die spezifische Methode, ich werde hier nicht ins Detail gehen) 2、Discuz! Optimiert2.1. VerfahrensanpassungVon Discuz! X3 hat zusätzliche Unterstützung für https hinzugefügt, und wenn du https nutzt, um auf das Forum zuzugehen, werden die Links im Forum zu https. Wenn du feststellst, dass die meisten Links bereits HTTPS verwenden, bedeutet das, dass Discuz es automatisch erkannt hat, und du kannst diesen Schritt überspringen und direkt zum nächsten Schritt übergehen. Discuz verwendet $_SERVER['HTTPS'] zur Beurteilung von SSL, aber aufgrund meines VPS-Architekturproblems (nginx+php-fpm) kann es auf diese Weise nicht erkannt werden, daher muss ich einige Anpassungen am Discuz-Programm vornehmen (mit $_SERVER['SERVER_PORT']). Quelle/Klasse/Discuz/discuz_application.php (ca. Zeile 187): Finden: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopierenModifiziert zu: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopierenuc_server/avatar.php (ca. Zeile 13): Finden: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Code kopierenModifiziert zu: - define('UC_API', strtolower(($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Code kopierenNach der Änderung habe ich den Cache aktualisiert und festgestellt, dass die meisten Links zu https wurden. 2.2. HintergrundeinstellungenEs gibt auch Einstellungen im Hintergrund, die die Nutzung von https beeinträchtigen können Im Hintergrund setzt der >Webmaster > UCenter die > UCenter-Zugriffsadresse, die so modifiziert wird, dass sie mit https beginnt UCenter > Application Management > Die Haupt-URL der Anwendung wird auf https geändert Außerdem können einige Einstellungen im Hintergrund > globale > Domainnamen-Einstellungen https ebenfalls ungültig machen; wenn du die vorherigen Schritte gemacht hast und es immer noch nicht aktivieren kannst, kannst du die Einstellungen hier vorübergehend löschen, um es auszuprobieren. 3. Lösche den CacheNachdem die Einstellungen abgeschlossen sind, musst du den Cache leeren, damit die Einstellungen wirksam werden. Bereinige den Cache und den Speicher-Cache, und wenn du den Post-Cache einstellst, musst du den Cache in der Datenbank reinigen (die entsprechende Cache-Datenbank leeren oder warten, bis der Cache fehlschlägt). An diesem Punkt ist Discuz https erfolgreich aktiviert, und natürlich kann beim Zugriff auf einige Seiten die Sperre überschritten werden. Weil andere HTTP-Inhalte auf der Seite geladen werden. Es könnten Statistik-Codes, QQ-Sharing-Codes, QQ-Show-Avatare usw. sein, die vorerst kein HTTPS-Protokoll bereitstellen und daher nicht aktiviert werden können. Warte einfach, bis Discuz https weiter unterstützt.
|