在网上看到有同志说的虚拟主机不能使用https,其实是可以使用的。方法也很简单,所有操作都可以在阿里云的管理控制台实现。步骤分为:获取https证书,开启CDN加速并绑定域名,域名添加cname解析,坐等成功。下面详细解释。
注:本文实现方法建立在域名、虚拟主机都是在阿里云购买的前提下。
1.获取https证书
打开阿里云管理控制台,找到证书服务,然后购买证书,现在只有赛门铁克有免费的证书了,就买这个,然后提交订单。
付款完成后,到我的订单里,可以看到刚刚买的服务,点击【信息补全】按钮,将你的网站地址输入,因为只能支持一个所以就随便你输入带www的或者不带www的。如果说你的域名是在阿里云购买的就不用验证域名所有权了,如果不是还有验证域名所有权,这个比较繁琐,跟着步骤来就好,在这里就不赘述了。
证书申请后是需要审核的,一般很快半小时就好。审核通过后是这样的。
2.配置HTTPS证书
到阿里云管理控制台【CDN】的【CDN域名列表中】,添加一个新的域名,选择图片小文件加速,类型IP,然后将阿里云虚拟主机的IP输入。端口一定选择80,不要选择443
填写好后,依次打开:CDN域名列表–选择你添加的域名,点击右边的管理–开启HTTPS安全加速–选择证书里有你已经申请到的证书–然后选择HTTP -> HTTPS
3.域名解析
将你添加的域名详细信息里的 CNAME绑定内容拷贝,到域名解析处,添加一个CNAME解析,主机记录www,记录值就是你刚刚复制的内容。如果是虚拟主机,需要将带有www的A解析修改为CNAME解析,同时记录值修改为刚刚复制的内容。这样就差不多可以了,接下来要做的就是等待和刷新网站。一般十分钟就可以看到。输入域名时,原来http变成了https。
最后一步是修改站点的代码,前面说过,虽然用户通过https访问CDN服务器,但CDN服务器到源站是通过http访问的,(以WordPress为例)这样的话,呈现在最终用户的页面中里,链接的地址还是显示http开头的,比如:
http://www.bensblog.cn/about 我们需要呈现给用户的是https://www.bensblog.cn/about 这种的url, 在WordPress也很简单,它是有一套专门的url函数,可以做一些url控制,比如rewrite等,这也是不要去硬编码url的原因, 跟踪代码可以发现,它是通过 $_SERVER[‘HTTPS’] 服务器变量判断当前环境是否为https访问,我们可以这样骗过它,在wp-config.php文件开头写入以下内容:
define(‘WP_HOME’, ‘https://’.$_SERVER[‘HTTP_HOST’]);
define(‘WP_SITEURL’, ‘https://’.$_SERVER[‘HTTP_HOST’]);
$_SERVER[‘HTTPS’] = ‘ON’;
这样就大功告成了。