|
Οι καιροί εξελίσσονται συνεχώς και η απαίτησή μας για ασφαλή επικοινωνία αυξάνεται. Στο Discuz X3, λέγεται ότι υποστηρίζεται το https, οπότε αφού πήρα το πιστοποιητικό SSL, πρόσθεσα SSL στον ιστότοπο μόλις το πήρα. Αλλά αφού το πρόσθεσα, διαπίστωσα ότι πολλά μέρη δεν χρησιμοποιούσαν συνδέσμους https, οπότε άρχισα να ελέγχω τον πηγαίο κώδικα του Discuz για να δω τι πήγε στραβά. 1. Πιστοποιητικό SSL & διαμόρφωσηΠρώτα απ 'όλα, για να ενεργοποιήσετε το SSL, πρέπει να έχετε πιστοποιητικό, σωστά; Είτε εκδίδεται από κανονική ΑΠ είτε υπογράφεται από τον ίδιο, δεν είναι δυνατόν να μην υπάρχει βεβαιότητα. Εάν όχι, κάντε πρώτα αίτηση για ένα. (Παρακαλώ γκουγκλάρετε τη συγκεκριμένη μέθοδο, δεν θα μπω σε λεπτομέρειες εδώ) 2, Συζήτηση! Βελτιστοποιημένο2.1. Προσαρμογή της διαδικασίαςΑπό το Discuz! Το X3 έχει προσθέσει υποστήριξη για https και εάν χρησιμοποιείτε https για πρόσβαση στο φόρουμ, οι σύνδεσμοι στο φόρουμ θα γίνουν https. Εάν διαπιστώσετε ότι οι περισσότεροι σύνδεσμοι χρησιμοποιούν ήδη https, σημαίνει ότι το Discuz το έχει αναγνωρίσει αυτόματα και μπορείτε να παραλείψετε αυτό το βήμα και να μεταβείτε απευθείας στο επόμενο βήμα. Το Discuz χρησιμοποιεί $_SERVER['HTTPS'] για να κρίνει το SSL, αλλά λόγω του προβλήματος αρχιτεκτονικής VPS (nginx+php-fpm), δεν μπορεί να αναγνωριστεί με αυτόν τον τρόπο, επομένως πρέπει να κάνω κάποιες προσαρμογές στο πρόγραμμα Discuz (χρησιμοποιώντας $_SERVER['SERVER_PORT']). πηγή/τάξη/discuz/discuz_application.php (γ. γραμμή 187): Εύρημα: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Αντιγραφή κώδικαΤροποποιήθηκε σε: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Αντιγραφή κώδικαuc_server/avatar.php (περ. γραμμή 13): Εύρημα: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Αντιγραφή κώδικαΤροποποιήθηκε σε: - 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'], '/'))));
Αντιγραφή κώδικαΜετά την τροποποίηση, ενημέρωσα την προσωρινή μνήμη και διαπίστωσα ότι οι περισσότεροι σύνδεσμοι έγιναν https. 2.2. Ρυθμίσεις φόντουΥπάρχουν επίσης ρυθμίσεις στο παρασκήνιο που ενδέχεται να επηρεάσουν τη χρήση του https Στο παρασκήνιο, ο >webmaster > UCenter ορίζει τη διεύθυνση πρόσβασης > UCenter, η οποία τροποποιείται ώστε να ξεκινά με https UCenter > Διαχείριση εφαρμογών > Η κύρια διεύθυνση URL της εφαρμογής τροποποιείται ώστε να ξεκινά με https Επιπλέον, ορισμένες ρυθμίσεις στο παρασκήνιο > καθολικών ρυθμίσεων ονόματος τομέα > ενδέχεται επίσης να ακυρώσουν το https, εάν έχετε κάνει τα προηγούμενα βήματα και εξακολουθείτε να μην μπορείτε να το ενεργοποιήσετε, μπορείτε να διαγράψετε προσωρινά τις ρυθμίσεις εδώ για να δοκιμάσετε. 3. Εκκαθαρίστε την προσωρινή μνήμηΑφού ολοκληρωθούν οι ρυθμίσεις, πρέπει να διαγράψετε την προσωρινή μνήμη για να τεθούν σε ισχύ οι ρυθμίσεις. Καθαρίστε την προσωρινή μνήμη και την προσωρινή μνήμη και εάν ορίσετε την προσωρινή μνήμη ανάρτησης, πρέπει να καθαρίσετε την προσωρινή μνήμη στη βάση δεδομένων (αδειάστε την αντίστοιχη βάση δεδομένων προσωρινής μνήμης ή περιμένετε να αποτύχει η προσωρινή μνήμη). Σε αυτό το σημείο, το Discuz https ενεργοποιείται με επιτυχία και φυσικά, κατά την πρόσβαση σε ορισμένες σελίδες, το κλείδωμα μπορεί να διασταυρωθεί. Επειδή στη σελίδα φορτώνεται άλλο περιεχόμενο http. Μπορεί να είναι κωδικοί στατιστικών στοιχείων, κωδικοί κοινής χρήσης QQ, avatar εμφάνισης QQ κ.λπ., που δεν παρέχουν πρωτόκολλο https προς το παρόν, επομένως δεν μπορούν να ενεργοποιηθούν. Απλώς περιμένετε μέχρι το Discuz να υποστηρίξει περαιτέρω το https.
|