Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 14855|Antwort: 2

[Website-Aufbau-Wissen] Über Discuz! (X3.1) Wie man HTTPS-Verschlüsselung aktiviert

[Link kopieren]
Veröffentlicht am 30.05.2015 23:42:13 | | |
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 & Konfiguration
Zunä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. Verfahrensanpassung
Von 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:
  1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopieren
Modifiziert zu:
  1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopieren
uc_server/avatar.php (ca. Zeile 13):
Finden:
  1. define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Code kopieren
Modifiziert zu:
  1. 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 kopieren
Nach der Änderung habe ich den Cache aktualisiert und festgestellt, dass die meisten Links zu https wurden.
2.2. Hintergrundeinstellungen
Es 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 Cache
Nachdem 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.





Vorhergehend:Neue Produktkollektion der Google I/O-Konferenz 2015
Nächster:Nginx Selbststart ist fehlgeschlagen
Veröffentlicht am 01.06.2015 17:05:36 |
Das Forum möchte SSL-verschlüsselte Übertragungstechnologie ermöglichen
Veröffentlicht am 03.01.2018 13:57:42 |
Direct $_G['isHTTPS'] = true;
define('UC_API', strtolower('https://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com