给hexo加上HTTPS

前言

最近发现,各大网站好像已经开始全站使用HTTPS,看着浏览器地址栏左边有着一把绿色的小锁,好像是一件很酷的事情。国内的网络环境好像越来越差,除了学会科学上网之外,好像也难免会遇到通讯服务商在网站上加上小广告的问题。随着不断了解计算机的知识,安全概念也越来越重。看着某某网站又被脱裤,一不小心自己的隐私可能就泄露出去了。在社工库上一查,还真能发现自己小学时候使用过的密码。不过,现在当然已经学会了各种措施,每个网站独立密码,能双重保护地就进行双重保护。1password也是我经常使用的一个密码管理软件……啊,好像扯远了。今天,天气很好,也想给自己的博客加上把绿色的小锁HTTPS。

什么是HTTPS

HTTPS全称Hypertext Transfer Protocol Secure 超文本安全协议。也就是HTTP加上安全传输层协议TSL/SSL。介于HTTP层与TCP层之间的一层安全协议。通过安全认证,可以避免HTTP中间人攻击,信息污染,信息劫持等问题。详细信息的话腾讯Bugly的文章全站HTTPS来了介绍得很详细。HTTPS基础原理,通信过程,在这篇文章里都有详细地讲到。

那么接下来就直接进入主题,给我的博客加上HTTPS吧。

给博客加上HTTPS

数字证书

通过上述的HTTPS介绍,可以知道如果我们要给让博客的协议变成HTTPS,就需要有CA认可的证书才可以,一般这样子的证书是需要自己进行购买和申请认证的。简单RSA非对称性的加密算法是无法避免中间人攻击的。存在着中间人攻击和信息抵赖的风险。所以我这里所采用的方法是用,Cloudflare所提供的CDN来作为HTTPS的接入口。

CDN

什么是CDN? CDN的全称就是Content Delivery Network,内容分发网络。其最基本的思路就是,用户在访问一个网站的时候,不直接访问这个网站的服务器,CDN系统会根据地理位置,将用户重新导向离其最近的CDN服务器。网站的内容在这个CDN服务器上会有相应的缓存,从而使用户更快地访问到所需要的内容,可以减少网络拥堵的情况,也可以减轻网站的服务器承受太大的访问量,以及带宽不足的情况。

主要步骤

  1. 注册Cloudflare,添加个人网站
  2. 获取Cloudflare的Domain Name Server
  3. 在域名提供商处修改自己域名的Domain Name Server为2所获取的DNS
  4. 开启SSL加密,选择flexible
  5. 开启强制跳转,使http自动跳转到https

步骤1,2在注册cloudflare的过程中,跟着流程一步一步做就好了。步骤3的话我们要先取消掉原有的DNS的解析服务,修改为cloudflare的DNS的地址。然后在Cloudflare的DNS中添加相应的DNS记录即可。可能会用到的DNS record大概有下面几种

  • A记录: 将一个域名指向一个ipv4的地址
  • AAAA记录: 将一个域名指向一个ipv6的地址
  • CNAME记录: 将一个域名指向另一个域名

步骤4中,我们所使用的是flexible的SSL加密方式。这种加密方式
根据cloudflare的解释如下:

Flexible SSL: There is an encrypted connection between your website visitors and Cloudflare, but not from Cloudflare to your server.

You do not need an SSL certificate on your server

Visitors will see the SSL lock icon in their browser

也就是说这其实不是一种安全的加密方式,因为其实服务器与CDN在通信过程中的信息是没有加密的。但是因为我使用的git page 以及没有购买相应的证书,所以没法再服务器上部署SSL。所以CDN与服务器之间的通信就不是加密的通信。

在步骤5中,在cloudflare上的Page Rules设置中,添加上一条规则使得通过http协议的访问也会强制跳转到https上。

全站https

要做到成功让这个博客满足https的要求,在博客所使用所有的图片自然也是要使用https的链接才行的,只要网站上所使用的资源不是全部通过https的就存在着安全的风险。且网站会被chrome等浏览器认为是不安全的。

这里所使用的是新浪微博的图床,在chrome商店可以找到对应的插件。在左下角有的https的选项,只要勾选上了就可以默认生成https的图片链接了。

PS: 博客使用的LeanCloud的服务来做阅读数量的统计,所以在leancloud上相应地也要修改允许访问的域名的协议为HTTPS。否则以新的HTTPS协议进行访问,会被过滤掉,导致无法正常显示人数统计。

总结

虽然这里所使用的方法,不是安全的一种方法。网站仍然会面临中间人攻击等一系列问题。因为服务器与CDN之间的通信未加密。但是至少用户在访问网站的时候,不会被通信服务商再拦截再什么广告了。刚好在学习计算机网络的过程中,了解了一些https、cdn、dns、ssl的知识。随着chrome,firefox等浏览器和苹果的大力推进。HTTPS肯定是接下去的发展趋势了,而且证书的费用也在下降。所以,各个网站都是很有必要,向这里过渡的。还有,看着自己浏览的网站,有一个绿色的小锁,就是一件很酷的事情啊,哈哈。

您的支持将鼓励我继续创作!