HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
无论是什么网站,都会涉及用户注册、登陆等隐私信息,既然HTTPS是一种加密、更安全的传输方式,Moodle也是时候安装SSL证书了,并且启用https访问。
一、SSL证书及配置
(一)SSL证书获取
腾讯域名可以购买SSL证书,价格不菲呀。幸好有免费版——域名型免费版(DV),证书品牌:TrustAsia,证书期限一年,时间短了一些,免费的也没有办法。申请购买很快就通过审核了,然后直接下载SSL证书。
下载后的证书有4个版本,支持Tomcat、Nginx、IIS和Apache。
每个版本证书都包含三个文件,证书文件 1_root_bundle.crt
,2_www.domain.com_cert.crt
和私钥文件 3_www.domain.com.key。
(二)SSL证书安装
下载SSL证书后,按照证书安装指引部署证书,地址:https://cloud.tencent.com/document/product/400/4143
下面是我的SSL证书安装:
1.编辑 Apache 根目录下 conf/httpd.conf 文件
//去掉前面的#号,注释掉
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#Include conf/extra/httpd-ssl.conf
2.编辑Apache根目录下 conf/extra/httpd-ssl.conf 文件,修改如下内容:
<VirtualHost _default_:443>
DocumentRoot "D:/Apache24/htdocs/moodle"
ServerName https://www.xxxxxxx.com:443
#ServerAlias xxxxx.com:443
ServerAdmin xxxxx@qq.com
ErrorLog "d:/Apache24/logs/error.log"
TransferLog "d:/Apache24/logs/access.log"
SSLEngine on
SSLCertificateFile "D:/Apache24/conf/gxclouds/2_www.gxclouds.com.crt"
SSLCertificateKeyFile "D:/Apache24/conf/gxclouds/3_www.gxclouds.com.key"
SSLCertificateChainFile "D:/Apache24/conf/gxclouds/1_root_bundle.crt"
</VirtualHost>
<Directory "D:/Apache24/htdocs/moodle">
SSLOptions +StdEnvVars
</Directory>
配置完成后,重新启动 Apache 就可以使用。
二、Moodle启用https
Moodle如何启用https,有几种方式:
1.配置config.php(全站启用)
//将
$CFG->wwwroot = 'http://'.$_SERVER['HTTP_HOST'].'';
//改为:
$CFG->wwwroot = 'https://'.$_SERVER['HTTP_HOST'].'';
配置后,可全站启用https,全站启用https会影响访问速度,但总体影响太不大。
2.登录页面启用https
网站管理——安全——http安全
勾选 “只使用安全的 cookies”,启用“使用https登录”,只在登录页面启用https,可以同时兼顾Moodle隐私信息安全和整个网站访问的流畅性。
3.URL重定向(整站)
把整个网站所有的http链接和资源(指向自身网站)都一次性的转换为https:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
4.其他
打开防火墙https的默认端口443。