黑帽联盟

 找回密码
 会员注册
查看: 1458|回复: 0
打印 上一主题 下一主题

[建站教程] discuz X3.2修改文件支持https的教程(全网最完善版本)

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    本帖最后由 yun 于 2018-5-23 14:23 编辑

    以下本人亲测的,没有任何问题,如过程中出现什么问题,请回复留言

    discuz X3.2在系统上是支持https的,不过需要手动修改几个地方。首先确保服务器端已开启https,且正确配置了SSL证书。

    discuz X3.2开启支持https主要需要修改一下几个地方:

    1、查找修改文件discuz_application.php :(适用于nginx+pfm环境)
    source/class/discuz/discuz_application.php (约第 187 行处): 查找:
    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;
    复制代码


    2、查找修改文件avatar.php :
    uc_server/avatar.php (约第 13 行处)查找:
    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'], '/'))));
    复制代码
    3、除去非 HTTPS 内容避免提示”不安全内容“
    Source/plugin/manyou/Service/DiscuzTips.php ,最后的那段 JS 加载脚本删除就行。

    非楼主层如果有点评,那么点评者头像不是 HTTPS 开头,也需要修改一个文件来适配: template/default/forum/viewthread_node_body.htm (约 180 行),搜索 div class="psta vm">,将下面一行注释掉或者删除。

    打开浏览器,使用开发者工具或者查看源码逐一排查加载的非 HTTPS 资源并修改。


    4、后台设置的修改完善
    在后台还有一些设置,可能会干扰 https 的使用。

    后台 >全局 > 站点 URL ,改为 https 开头的

    后台 > 站长 > UCenter 设置 > UCenter 访问地址,修改为 https 开头的

    UCenter 后台 > 应用管理 > 应用的主 URL ,修改为 https 开头。
    修改后可能会显示通讯失败,如果 UC 和论坛程序安装在同一机器,此失败可无视,实测可以和 UC 正常通讯不影响(测试是否正常通讯程序的 Bug )

    如果 UC 和论坛程序不在一台机器上,有可能不能通讯。 另外在 后台 > 全局 > 域名设置 中的一些设置也可能使 https 失效,如果更新缓存后论坛默认连接还是 HTTP ,请删除 后台 > 全局 > 域名设置 > 应用域名 > 默认 里面的默认域名(一般去 forum.php 尾巴这里会有内容,为了 HTTPS 请删除)。

    5、模板的调整
    主要在模板的 foot.html 以及 header.html 等文件中,使用工具逐一排查模板文件中写死的 HTTP 链接,修改为 HTTPS 。

    6、还有一些就是后台的应用导致的,有一些应用不支持https,导致站点出现"不安全的提示",如果是这样的话,建议关闭那个应用或者直接卸载掉



    到此,discuz X3.2已经开启支持https了 。

    虽然支持https了,但是浏览器看不到绿色的小锁标志,这块里需要我们在模板里修改header_common.htm文件,在head头部里面添加如下语句:
    1. <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
    复制代码
    最后后台更新网站程序。


    这里在ucenter里面有个通信,这里是因为由http301跳转到https的问题,导致通信不成功;如果是这样的话,可以通过进入的相关链接,具体做法按照那里面的去做。


    相关链接:DISCUZ开启https后ucenter通信失败解决方法

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部