玩传奇论坛

标题: Discuz!X启用https(SSL证书)访问设置! [打印本页]

作者: admin    时间: 2018-1-11 12:54
标题: Discuz!X启用https(SSL证书)访问设置!
目前https的重要性不言而喻了,但是discuz由于其庞大复杂的功能架构,迭代次数太多而导致的臃肿的代码,云平台等产品落后拖后腿导致https实施起来可能面临一些不可预料的问题。于是我们就做了一次https的实践,来看看discuz的https之路到底能走到哪一步。

首先您得有一个独立域名、独立VPS。
服务器:云服务器
环境:centos64位+nginx + mysql+PHPv5.4
discuz版本:Discuz! X3.2

SSl证书申请地址(免费证书)
https://www.startssl.com/

第一步:按照参看文献中修改部分文件,让其支持我们的环境。
查找文件:source/class/discuz/discuz_application.php
  1. $_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
复制代码
替换为
  1. $_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
复制代码

接下来查找文件:uc_server/avatar.php
  1. define('UC_API', strtolower(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'))));
复制代码
替换为
  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'], '/'))));
复制代码

第二步:修改后台和uc的配置,保证通信
后台 > 站长 > UCenter设置 > UCenter 访问地址,修改为https开头的
UCenter后台 > 应用管理 > 应用的主URL,修改为https开头
另外在 后台 > 全局 > 域名设置 中的一些设置也可能使https失效,如果进行了之前的几步还是无法启用,可以暂时删除这里的设置试试。

第三步:服务器相关配置
http重定向到https
证书访问部署,重启nginx

第四步:去除discuz_tips
source/function/function_core.php
  1. if(!defined('IN_MOBILE') && !defined('IN_ARCHIVER')) {
  2.          $tipsService = Cloud::loadClass('Service_DiscuzTips');
  3.          $tipsService->show();
  4.     }
复制代码
替换为
  1. if(!defined('IN_MOBILE') && !defined('IN_ARCHIVER')) {
  2.         // $tipsService = Cloud::loadClass('Service_DiscuzTips');
  3.         // $tipsService->show();
  4.     }
复制代码

总结:基本用户是正常的,后台和云平台的一些互通功能会有异常(不影响普通用户使用。)
uc通信是显示不成功的,不过这个主要是测试地址http被拦截了,不影响使用。
前台,目前没有发现任何不兼容问题,也就是普通用户访问时基本上没问题的。
后台,云平台功能会有一些异常,主要是在https的环境中,discuz太old的云平台目前不支持https,被浏览器屏蔽。
安米app不支持https,目前的解决办法,就是安米的app这边请求暂时保持http请求原状。
第三方插件大体都支持,但是如果有绝对连接http的,估计可能被拦截。
qq互联、微信登录等,目前测试正常。

其他情况的预测:
如启用了远程附件,远程附件访问的url地址也需要改为https
可以把后端admin.php访问的路径,取消https,这样子可以保证后台的可访问,不过会牺牲安全访问啦。

作者: 北方故事    时间: 2018-2-28 11:19
回的人少,我来小顶一下!




欢迎光临 玩传奇论坛 (http://wanmirbbs.com/) Powered by Discuz! X3.2