Set Up SSL on Github Pages With Custom Domains

由于之前苹果公司限制所以应用必须在17年1月1号前开启ATS(后面推迟了deadline,可能是太多应用都还没有开启吧:sweat:),所以最近一直都在研究HTTPS协议。趁这个机会,在这段时间内我也将自己的博客迁移到HTTPS。因此做个分享,希望能够帮助到后面需要迁移的同学。

github目前已经全站支持HTTPS,如果没有使用自定义的域名,在github上只要打开一个开关就可以无缝支持HTTPS。但一旦使用了自定义域名,那就:sob:
SSL Settings

所以就只好自己来配置了:muscle:

为自己的网站添加SSL证书其实并不复杂,关键点在于要拥有一个SSL证书。由于SSL证书价格不菲,很多个人会选择放弃使用HTTPS。但是,自从开源、免费的ssl证书出现后,像是Let’s Encrypt和Cloudflare,基本上就没有任何理由还在纠结是否要迁移HTTPS了。

对比了目前一些主流的免费SSL证书,我最终选择了Cloudflare。这里就不详细介绍Cloudflare了,感兴趣的同学可以自行google或者到Cloudflare的官网进行了解。

SSL证书申请和配置

在Cloudflare上申请和配置SSL证书非常简单,只需下面几步:

  1. 注册并登录Cloudflare

  2. 按照要求配置站点信息;

  3. 配置完成后,记得确保将SSL设置成Flexible
    SSL Settings

  4. 到DNS一栏中查看分配的DNS服务器;
    SSL Settings

  5. 到你的域名注册网站中,将域名的DNS服务器设置成Cloudflare提示的DNS服务器;
    SSL Settings

  6. 一般情况下最晚24小时会生效,也可以在Cloudflare中查看是否已经生效;

  7. 生效之后,通过HTTPS协议访问你的网站,并查看证书是否显示正确。
    SSL Settings

PS: 如果你的网站的证书显示不可信,可以检查下面几项内容:

  1. 检查你的网站有没有访问HTTP资源
  2. Cloudflare中SSL有没有设置成Flexible

网站配置

为了达到更好效果,限制HTTP访问,强制HTTPS,可以按照下面几步进行优化:

  1. 修改你的_config.yml
xml
1
2
url: https://www.yoursite.com   # with the https protocol
enforce_ssl: www.yoursite.com # without any protocol
  1. 在Head中增加下面这段代码来强制跳转HTTPS
JavaScript
1
2
3
4
5
<script type="text/javascript">
var host = "yoursite.com";
if ((host == window.location.host) && (window.location.protocol != "https:"))
window.location.protocol = "https";
</script>