|
Les temps évoluent constamment, et notre demande pour une communication sécurisée ne cesse de croître. Dans Discuz X3, il est dit que le https est pris en charge, donc après avoir obtenu le certificat SSL, j’ai ajouté SSL au site dès que je l’ai eu. Mais après l’avoir ajouté, j’ai constaté que beaucoup d’endroits n’utilisaient pas de liens https, alors j’ai commencé à vérifier le code source de Discuz pour voir ce qui n’allait pas. 1. Certificat SSL et configurationTout d’abord, pour activer la SSL, il faut avoir un certificat, n’est-ce pas ? Qu’il soit émis par un CA ordinaire ou signé par soi-même, il n’est pas possible de ne pas avoir de certitude. Sinon, postulez d’abord pour en obtenir un. (Merci de chercher sur Google la méthode spécifique, je ne vais pas entrer dans les détails ici) 2、Discuz ! Optimisé2.1. Ajustement de la procédureDe Discuz ! X3 a ajouté la prise en charge de https, et si vous utilisez https pour accéder au forum, les liens dans le forum deviendront https. Si vous constatez que la plupart des liens utilisent déjà https, cela signifie que Discuz l’a automatiquement reconnu, et vous pouvez sauter cette étape et passer directement à l’étape suivante. Discuz utilise $_SERVER['HTTPS'] pour juger SSL, mais à cause de mon problème d’architecture VPS (nginx+php-fpm), il ne peut pas être reconnu de cette façon, donc je dois faire quelques ajustements au programme Discuz (en utilisant $_SERVER['SERVER_PORT']). Source/Classe/Disque/discuz_application.php (vers la ligne 187) : Trouver : - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code de copieModifié en : - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Code de copieuc_server/avatar.php (vers la ligne 13) : Trouver : - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Code de copieModifié en : - 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 de copieAprès la modification, j’ai mis à jour le cache et j’ai constaté que la plupart des liens devenaient https. 2.2. Paramètres en arrière-planIl existe aussi des réglages en arrière-plan qui peuvent interférer avec l’utilisation de https En arrière-plan, le >webmaster > UCenter définit l’adresse d’accès > UCenter, qui est modifiée pour commencer par https UCenter > Gestion d’applications > L’URL principale de l’application est modifiée pour commencer par https De plus, certains paramètres en arrière-plan > dans les paramètres globaux > noms de domaine peuvent également invalider https ; si vous avez suivi les étapes précédentes et que vous ne pouvez toujours pas les activer, vous pouvez temporairement supprimer les paramètres ici pour essayer. 3. Vider le cacheUne fois les réglages terminés, il faut vider le cache pour que les paramètres prennent effet. Nettoie le cache et le cache mémoire, et si tu configures le cache post, tu dois nettoyer le cache dans la base de données (vider la base de données correspondante, ou attendre que le cache tombe en panne). À ce stade, Discuz https est activé avec succès, et bien sûr, lors de l’accès à certaines pages, le verrou peut être franchi. Parce que d’autres contenus http sont chargés dans la page. Cela peut être des codes statistiques, des codes de partage QQ, des avatars de présentation QQ, etc., qui ne fournissent pas de protocole https pour le moment, donc ils ne peuvent pas être activés. Attendez simplement que Discuz prenne davantage en charge https.
|