|
Časi se nenehno spreminjajo, naše povpraševanje po varni komunikaciji pa narašča. V Discuz X3 piše, da je https podprt, zato sem po pridobitvi SSL certifikata takoj, ko sem ga dobil, dodal SSL na spletno stran. A po dodajanju sem ugotovil, da veliko krajev ne uporablja https povezav, zato sem začel preverjati izvorno kodo Discuz, da vidim, kaj je šlo narobe. 1. SSL potrdilo in konfiguracijaNajprej, da omogočiš SSL, moraš imeti certifikat, kajne? Ne glede na to, ali ga izdaja redni CA ali ga je podpisal posameznik, ni mogoče imeti negotovosti. Če ne, se najprej prijavi za enega. (Prosim, poguglajte točno metodo, tukaj ne bom šel v podrobnosti) 2、Discus! Optimizirano2.1. Prilagoditev postopkaIz Discusa! X3 je dodal podporo za https, in če uporabite https za dostop do foruma, bodo povezave na forumu postale https. Če ugotovite, da večina povezav že uporablja https, to pomeni, da ga je Discuz samodejno prepoznal in lahko ta korak preskočite ter greste neposredno na naslednji korak. Discuz uporablja $_SERVER['HTTPS'] za ocenjevanje SSL, vendar zaradi moje težave z arhitekturo VPS (nginx+php-fpm) tega ni mogoče prepoznati na ta način, zato moram nekaj prilagoditi Discuzovemu programu (z uporabo $_SERVER['SERVER_PORT']). vir/razred/discuz/discuz_application.php (c. vrstica 187): Najdi: - $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Kopiraj kodoSpremenjeno v: - $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
Kopiraj kodouc_server/avatar.php (približno vrstica 13): Najdi: - define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
Kopiraj kodoSpremenjeno v: - 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'], '/'))));
Kopiraj kodoPo spremembi sem posodobil predpomnilnik in ugotovil, da je večina povezav postala https. 2.2. OzadjaV ozadju so tudi nastavitve, ki lahko motijo uporabo https V ozadju >webmaster > UCenter nastavi > UCenter dostopni naslov, ki se spremeni tako, da začne s https UCenter > upravljanje aplikacij > Glavni URL aplikacije se spremeni tako, da začne z https Poleg tega lahko nekatere nastavitve v ozadju > globalnih > domenskih imen prav tako razveljavijo https; če ste naredili prejšnje korake in ga še vedno ne morete omogočiti, lahko začasno izbrišete nastavitve tukaj in poskusite. 3. Izpraznite predpomnilnikKo so nastavitve končane, moraš počistiti predpomnilnik, da se nastavitve začnejo veljati. Očistite predpomnilnik in pomnilniški predpomnilnik, in če nastavite postpredpomnilnik, ga morate očistiti tudi v bazi podatkov (izprazniti ustrezno bazo predpomnilnika ali počakati, da predpomnilnik odpove). Na tej točki je Discuz https uspešno omogočen, seveda pa je mogoče pri dostopu do nekaterih strani zaklep prekršiti. Ker je na strani naložena druga http vsebina. Lahko gre za statistične kode, QQ kode za deljenje, QQ prikazovalne avatarje itd., ki trenutno ne zagotavljajo https protokola, zato jih ni mogoče omogočiti. Samo počakaj, da Discuz še dodatno podpira https.
|