以下仅个人观点。 HTTPS从诞生以来就一直得到人们的关注,从苹果在iOS强制使用HTTPS就可以看出。

使用HTTP主要是有以下几个危险:

  1. 网站域名可能被其他假服务端伪装(尤其是客户端的伪装)
  2. 网站在访问时可能被拦截植入Block(广告居多)甚至被修改为其他网站

HTTPS的诞生就是为了解决这个问题,相比HTTP增加了SSL证书认证。

这个证书由CA机构认证,所以不是随随便便就能申请到的,除非你有很多Money。

当然根证书普通人是拿不到,还是由很多无私的机构提供了很多免费的子证书,甚至国外已经有很多为推动HTTPS建立的全民HTTPS计划,其中就有提供免费的SSL证书服务。

SSL证书主要是由两个方面的认证,一个是服务器端,一个是客户端。其实通常情况下,HTTPS所谓的双向认证其实仅仅是单向验证,客户端这边是默认通过的或者简单校验的,只要服务器才会进行严格的校验(很多APP便是这么做的),当然也排除一些安全要求高的场合,比如支付请求,这必须是客户端和服务器进行严格的双向认证的。

我的个人网站现在已经全面支持HTTPS,很开心。关于HTTPS扯得差不多了,接下来我将聊聊关于Github Pages如何支持自定义域名的HTTPS(github pages默认域名是已经支持HTTPS的)。

这里有两个链接可以参考参考,我的解决方案就来自这里:

Add HTTPS support to Github Pages including custom domains

GitHub Pages Now (Sorta) Supports HTTPS, So Use It

对于使用Pages默认域名的情况,如域名为.github.io,支持HTTPS很简单,这方面工作Github已经做好了,直接进入.github.io的仓库,进入Settings,在GitHub Pages设置里面,有Enforce HTTPS选项,选中即可。

如果你使用了自定义域名(Custom domain),那就不行了,就要使用第三方服务了。

我使用的是Cloudflare,其实国内很多服务商也提供SSL服务,不过就是收费没有免费的而已。比如我之前购买了万网的域名,使用了阿里云DNS服务,同时阿里云也提供SSL服务,就是有点贵……

Cloudflare的操作步骤如下:

  1. 注册帐号,输入自己的网址进行DNS解析(如果没解析出来,自己把之前的DNS服务商的解析地址填入Add Record即可)。
  2. 接下来把域名的DNS地址替换为Cloudflare提供的地址,到这里访问域名就走Cloudflare的服务了,之前使用的DNS服务商可以说再见了。
  3. CloudFlare的Crypto设置SSL为Flexible
  4. CloudFlare的Page Rules中增加一条路由规则:Always use https,输入自己的域名地址(强制HTTPS访问)

以上操作做完,HTTPS就搭建完成了。CloudFlare和阿里云的域名部门一样,是一个CDN提供商,它还提供其他各种各样的服务(除了SSL),你可以看自己的需求去设置。

CloudFlare的原理实质上你请求域名时候,域名走CloudFlare这边,CloudFlare再访问Github Pages,最后再把Pages内容原路返回。

以上便是Github Pages自定义域名支持HTTPS的方法。除了CloudFlare之外,还有很多服务商都提供SSL服务(比如收费的阿里云,收费的话证书是单独的,不是共享的,安全更高)