Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14855|Antwoord: 2

[Website-ontwikkeling Kennis] Over Discuz! (X3.1) Hoe https-encryptie inschakelen

[Link kopiëren]
Geplaatst op 30-05-2015 23:42:13 | | |
De tijden veranderen voortdurend en onze vraag naar veilige communicatie neemt toe. Op Discuz X3 staat dat https wordt ondersteund, dus nadat ik het SSL-certificaat had gekregen, heb ik SSL aan de website toegevoegd zodra ik het had. Maar nadat ik het had toegevoegd, ontdekte ik dat veel plekken geen https-links gebruikten, dus begon ik de broncode van Discuz te controleren om te zien wat er mis was gegaan.
1. SSL-certificaat & configuratie
Allereerst, om SSL in te schakelen, moet je een certificaat hebben, toch? Of het nu door een reguliere CA is uitgegeven of door iemand zelf is ondertekend, het is niet mogelijk om geen zekerheid te hebben. Zo niet, solliciteer dan eerst voor een aanvraag. (Google alsjeblieft de specifieke methode, ik ga hier niet in detail treden)
2、Discuz! Geoptimaliseerd2.1. Procedure-aanpassing
Van Discuz! X3 heeft ondersteuning toegevoegd voor https, en als je https gebruikt om toegang te krijgen tot het forum, worden de links in het forum https. Als je merkt dat de meeste links al https gebruiken, betekent dat dat Discuz het automatisch heeft herkend, en kun je deze stap overslaan en direct naar de volgende stap gaan.
Discuz gebruikt $_SERVER['HTTPS'] om SSL te beoordelen, maar vanwege mijn VPS-architectuurprobleem (nginx+php-fpm) kan het op deze manier niet worden herkend, dus moet ik wat aanpassingen doen aan het Discuz-programma (met $_SERVER['SERVER_PORT']).
Bron/klasse/discuz/discuz_application.php (c. regel 187):
Vind:
  1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopiëren
Aangepast tot:
  1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code kopiëren
uc_server/avatar.php (ongeveer regel 13):
Vind:
  1. define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Code kopiëren
Aangepast tot:
  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 kopiëren
Na de wijziging heb ik de cache bijgewerkt en ontdekte dat de meeste links https werden.
2.2. Achtergrondinstellingen
Er zijn ook instellingen op de achtergrond die het gebruik van https kunnen verstoren
Op de achtergrond stelt de >webmaster > UCenter het > UCenter-toegangsadres in, dat wordt aangepast om te beginnen met https
UCenter > Application Management > De hoofd-URL van de applicatie wordt aangepast om te beginnen met https
Daarnaast kunnen sommige instellingen op de achtergrond > globale > domeinnaaminstellingen https ongeldig maken; als je de eerdere stappen hebt gevolgd en het nog steeds niet kunt inschakelen, kun je de instellingen hier tijdelijk verwijderen om het te proberen.
3. Maak de cache leeg
Nadat de instellingen zijn voltooid, moet je de cache wissen voordat de instellingen van kracht worden.
Maak de cache en geheugencache schoon, en als je de postcache instelt, moet je de cache in de database opschonen (de bijbehorende cachedatabase leegmaken, of wachten tot de cache faalt).
Op dit punt is Discuz https succesvol ingeschakeld, en natuurlijk kan bij het openen van sommige pagina's de vergrendeling worden gekruist. Omdat andere http-inhoud op de pagina wordt geladen. Het kunnen statistiekcodes zijn, QQ-delingscodes, QQ-show-avatars, enzovoort, die voorlopig geen https-protocol bieden, dus ze kunnen niet worden ingeschakeld. Wacht gewoon tot Discuz https verder ondersteunt.





Vorig:2015 Google I/O Conferentie Nieuwe Productcollectie
Volgend:Nginx zelf-opstart mislukte
Geplaatst op 01-06-2015 17:05:36 |
Het forum wil SSL-versleutelde transmissietechnologie mogelijk maken
Geplaatst op 03-01-2018 13:57:42 |
Direct $_G['isHTTPS'] = waar;
define('UC_API', strtolower('https://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com