|
Doba se neustále mění a naše poptávka po bezpečné komunikaci roste. V Discuz X3 se uvádí, že https je podporován, takže po získání SSL certifikátu jsem SSL přidal na web hned, jakmile jsem ho dostal. Ale po přidání jsem zjistil, že mnoho míst https odkazy nepoužívá, tak jsem začal kontrolovat zdrojový kód Discuz, abych zjistil, co se pokazilo. 1. SSL certifikát a konfiguraceZa prvé, abyste mohli povolit SSL, musíte mít certifikát, že? Ať už je vydán běžným CA nebo podepsaný sám, není možné mít jistotu. Pokud ne, nejdřív se přihlaste k němu. (Prosím, vyhledejte si konkrétní metodu na Googlu, nebudu zde zacházet do detailů) 2、Rozklad! Optimalizováno2.1. Úprava postupuZ Discuz! X3 přidal podporu pro https, a pokud použijete https k přístupu na fórum, odkazy ve fóru se stanou https. Pokud zjistíte, že většina odkazů už používá https, znamená to, že Discuz to automaticky rozpoznal a můžete tento krok přeskočit a jít rovnou na další krok. Discuz používá $_SERVER['HTTPS'] k posouzení SSL, ale kvůli mému problému s architekturou VPS (nginx+php-fpm) ho takto nelze rozpoznat, takže musím provést nějaké úpravy v programu Discuz (s použitím $_SERVER['SERVER_PORT']). Zdroj/Třída/Diskuz/discuz_application.php (c. řádek 187): Najděte: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Kopírovat kódUpraveno na: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Kopírovat kóduc_server/avatar.php (přibližně řádek 13): Najděte: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Kopírovat kódUpraveno na: - 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'], '/'))));
Kopírovat kódPo úpravě jsem aktualizoval cache a zjistil jsem, že většina odkazů se stala https. 2.2. PozadíNa pozadí jsou také nastavení, která mohou zasahovat do používání https Na pozadí >webmaster > UCenter nastavuje > UCenter přístupovou adresu, která je upravena tak, aby začínala s https UCenter > Správa aplikací > Hlavní URL aplikace je upravena tak, aby začínala na https Navíc některá nastavení na pozadí > globálních > doménových názvech mohou https také zneplatnit, pokud jste provedli předchozí kroky a stále ho nemůžete povolit, můžete zde dočasně smazat nastavení a vyzkoušet. 3. Vyčistit cachePo dokončení nastavení je potřeba cache vymazat, aby se nastavení projevila. Vyčistěte cache a paměťovou cache, a pokud nastavíte post cache, musíte cache vyčistit v databázi (vyprázdnit odpovídající cache databázi, nebo počkat, až cache selže). V tomto bodě je Discuz https úspěšně povolen a samozřejmě při přístupu na některé stránky může být zámek překročen. Protože na stránce se načítá další http obsah. Mohou to být statistické kódy, QQ sdílené kódy, avatary QQ show apod., které zatím neposkytují https protokol, takže je nelze povolit. Jen počkejte, až Discuz bude dál podporovat https.
|