0%

Ubuntu服务器 Discuz X3.3 利用SSL证书 设置https 全攻略

首先我自己的网站 https://www.ttwinbug.com
未添加证书时的访问地址 http://www.ttwinbug.com

证书申请

自己的网站想升级为https的安全模式,首先要去申请SSL证书

这里推荐 景安网络的免费SSL证书
http://www.zzidc.com/main/huodong/freessl.html

注册及申请,这里就不具体说明了。

申请后,你会得到一个压缩包,里面包含3个证书文件。
你可以按照我以前的帖子进行在Ubuntu服务器中进行设置

请参照
Ubuntu 下安装支持SSL的Apache环境
Ubuntu 通过安装SSL证书,解决iOS, OTA下载的问题

这里附上本人的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/t.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/t.com.key
SSLCertificateChainFile /etc/apache2/ssl/t.com-ca-bundle.crt
ServerName www.ttwinbug.com
DocumentRoot "/home/winbug/var/html/www"
ErrorLog "/var/log/default_asia.log"
<Directory "/home/winbug/var/html/www">
AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName css3html5.ttwinbug.com
DocumentRoot "/home/winbug/var/html/ch3"
ErrorLog "/var/log/cs3.log"
</VirtualHost>

<VirtualHost *:80>
ServerName webtools.ttwinbug.com
DocumentRoot "/home/winbug/var/html/webtools"
ErrorLog "/var/log/webtools.log"
</VirtualHost>

<Directory "/home/winbug/var/html/www">
AllowOverride All
</Directory>

服务器配置好后,我们进行下一步

Discuz! X3.3站点部署SSL后兼容HTTPS访问

1、修改source/class/discuz/discuz_application.php(第187行)

1
$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;

修改为:

1
$_G['isHTTPS'] = true;

2、修改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'], '/'))));

3、修改/template/default/common/header.htm
将http://全部查找替换为:https://(一共5处)

4、后台 – 全局 – 站点信息 – 网站 URL:将http://改成https://网址

5、后台 – 站长 – UCenter设置 – UCenter 访问地址改成https://网址

6、后台 – UCenter(如果不能正常访问可以在新窗口打开,也可以直接访问UC地址) – 应用管理 – 点右边的编辑 – 应用的主URL改成https://网址

7、后台 – 工具 – 更新缓存

8、后台 – 界面 – 风格,点击“更新CSS缓存”按钮

到这里为止可以说基本上https访问已经没有问题了。………but
http://www.ttwinbug.com会跳到其他人的网站上,未解决此问题,我们需要修改2个地方。

A. 将网站根目录下的 .htaccess文件修改,添加如下代码

1
2
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

B. 修改/etc/apache2/site-available/xxx.conf (你自己的配置文件中)
添加相应的配置代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/t.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/t.com.key
SSLCertificateChainFile /etc/apache2/ssl/t.com-ca-bundle.crt
ServerName www.ttwinbug.com
DocumentRoot "/home/impress/var/html/www"
ErrorLog "/var/log/default_asia.log"
<Directory "/home/impress/var/html/www">
AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName www.ttwinbug.com
DocumentRoot "/home/impress/var/html/www"
ErrorLog "/var/log/default_asia.log"
</VirtualHost>

<VirtualHost *:80>
ServerName css3html5.ttwinbug.com
DocumentRoot "/home/impress/var/html/ch3"
ErrorLog "/var/log/cs3.log"
</VirtualHost>

<VirtualHost *:80>
ServerName webtools.ttwinbug.com
DocumentRoot "/home/impress/var/html/webtools"
ErrorLog "/var/log/webtools.log"
</VirtualHost>

<Directory "/home/impress/var/html/www">
AllowOverride All
</Directory>

请仔细对比和上面的配置文件。这时候,无论你是http://www.ttwinbug.com还是 https://www.ttwinbug.com
都直接进入https://www.ttwinbug.com

最后提供两个平滑重启的命令
Apache

1
apachectl -k graceful

Nginx

1
nginx -s reload