随着Google针对HTTPS
协议的大力推广,越来越多的企业和个人开始使用HTTPS
协议作为其网站的主要传输协议。博主也曾经考虑过使用HTTPS协议来实现博客内容的安全传输(防止运营商DNS劫持给我乱加一些广告),但是没有找到合适的方式。一个偶然的机会,发现有部分同学使用的是Hexo+Github的架构,但是使用的是HTTPS!!!怎么做到的?!带着这些疑问,我寻找着答案,其中一个最简单的解决方案就是使用CloudFlare提供的服务来实现HTTPS加密。
注册CloudFlare
关于如何使用Github来搭建Hexo博客系统不在本文的讨论范围之内,如果你感兴趣的话可以访问这篇文章https://qinjiangbo.com/github-page-customed-domain-and-cdn.html看一看。好,首先访问CloudFlare的官网地址https://www.cloudflare.com如下:
注册成功以后,需要做一件事就是修改DNS配置。这个时候你需要回到你的域名服务商那里修改,我的域名是在万网上买的,所以去阿里云修改。
修改域名DNS服务器
在修改域名DNS服务器之前,我们需要查看一下自己的CloudFlare给我们分配的DNS服务器地址是什么?点击CloudFlare菜单栏中的DNS
菜单,往下找就可以看到分配的DNS服务器地址,一般是有两个:
1 | beth.ns.cloudflare.com |
而阿里云默认的DNS服务器地址为:
1 | dns9.hichina.com |
修改完之后的情况如下:
添加域名解析
我们需要在CloudFlare的DNS中添加我们域名的解析,一般是添加两个,一个是有www的,一个是没有的。如下:
需要注意的是这个解析的类型一定要是带橙色云团的,而不是灰色的。关于这两个类型的区别很简单:灰色的表示单纯地进行DNS解析就和阿里云的功能一样,但是橙色的表示除了进行DNS解析以外还进行CDN反向代理,也就是进行HTTPS加密
。
添加SSL证书
我们需要点击CloudFlare菜单栏中的Crypto
进入配置SSL整数,一般来说默认就是Universal类型的。我们在设置SSL类型的时候,需要选择Flexible类型。关于SSL类型,一共有以下几种:
- Off: 一般来说,还有这个默认选项,也就是说访问者不会通过HTTPS来访问网站,任何HTTPS请求都会被重定向为HTTP请求。
- Flexible SSL: 这个选项的意思就是你不能在你自己的服务器上配置HTTPS协议支持。访客访问你的网站是通过HTTPS协议的,但是CloudFlare反向代理将请求转发到你的源服务器上的时候使用的是HTTP协议。
- Full SSL: 你的源网站是支持HTTPS的,安装的证书可能是不匹配你的域名或者证书可能是自签名的,这都是可以的。也就是说访客连接到CloudFlare以及CloudFlare连接到你的源网站使用的都是HTTPS协议。
- Full SSL (strict): 这一个要求更严格了,你的源网站必须使用没有过期的可信的CA或者是CloudFlare提供的CA证书。CloudFlare会通过HTTPS协议来连接你的源网站,和Full SSL的区别就是Full SSL (strict) 会校验你的证书有效性,而Full SSL则不会校验。
设置PageRules
点击CloudFlare菜单栏的Page Rules
,就可以添加规则了,免费用户好像只能添加三条规则,不过我们可以使用通配符来表示更多的情况。我的规则如下:
总结
完成以上的设置之后就需要静静地等待SSL配置生效,博主等了18个小时(免费用户最多可能等到24小时,而付费用户是需要15分钟),终于可以访问了。网上看,啦啦啦,有小绿锁了!
注意事项
:如果你的网站不想在SSL生效期间不能访问的话(一般会报一个SSL证书不匹配的错误),你可以将你的域名解析的地方更改为灰色云团就可以啦,更改以后等一两分钟就可以啦,通过以后再改为橙色云团。