为绑定域名的 GitHub Pages 启用 HTTPS

为绑定域名的 GitHub Pages 添加免费、自动续期的 SSL 证书,简单几步开启 HTTPS,添加小绿锁。

缘起

虽然现在各种网站都在 HTTPS 化,甚至有的个人网站在添加链接的说明里明确声明只与启用 HTTPS 的网站交换链接,但一直以来我启用 HTTPS 的需求并不强烈,又加上有懒癌在身,实在是没有动力去折腾,直到最近发生了几件事情。

  1. 最近一段时间也不知道是 GitHub Pages 做了调整还是 Google 的收录策略有了变化,Google 收录我的博客页面都是同时收录了 HTTP 和 HTTPS 两种版本,而很遗憾这个博客并没有配置有效的 SSL 证书,所以点开的是一个 HTTPS 的链接就会被浏览器提示连接不可信,有安全风险云云,虽然访问量不大,但这样体验太差,也是蛮闹心的。
  2. 恰逢知乎上有人邀我答题 Github Pages 绑定了个人域名,怎么使用 HTTPS 访问而证书不报错呢?
  3. 三月份的时候 @nubela 发邮件邀请我试用他为绑定域名的 GitHub Pages 制作的一键启用 HTTPS 的工具,而我当时答复的是实在太忙,后来有空再折腾。

几个理由加在一起,终于战胜了懒癌,让我动了起来。

enable https for GitHub Pages

步骤

@nubela 提供的工具非常友好且方便,第一次使用的我只简单做了一些配置,没有对 GitHub Pages 仓库做任何更改就实现了全站 HTTPS 化,自动使用了 Let's Encrypt 提供的免费 SSL 证书,有效期 90 天,Kloudsec 会在它过期前自动续期,换句话说,只要 Kloudsec 还活着并且免费提供这项服务的话,后面就不用管这个了。

记录操作步骤如下:

  1. 打开 Kloudsec 为 GitHub Pages 提供的工具 Kloudsec for GitHub Pages
  2. 按工具里的要求填好三个部分的内容,依次是
  3. 去上一步填写的邮箱里收邮件,激活 Kloudsec 账号并登录。
  4. 进入到 Dashboard 的 SETTINGS,在 Web Server Origin IP / Hostname 一栏填上 GitHub Pages 的可用 IP,比如我填写的是 103.245.222.133
  5. Web Server Origin IP
  6. 开启 HTTP 自动跳转到 HTTPS。*(非必须,按自己需求来。)*
  7. 进入到 Dashboard 的 PROTECTION,点击 SSL Encryption 里的按钮,选择你的网站:

    PROTECTION

    将 Automatically redirect to HTTPS site? 下面的开关切换到 ON:

    Automatically redirect to HTTPS site?
  8. 进入到 Dashboard 的 PLUGIN STORE,启用 Offline Protection、Page Optimizer 和 One-Click Encryption,一般来讲免费的计划就够用了,如果你想要使用付费计划提供更多更好的服务,那按需选择吧。
  9. Plugin Store

恭喜你已完成所有步骤!等待几分钟生效即可。

后话

实现原理

看 Kloudsec 的文档里描述的 HOW DOES IT WORK?,它提供的服务处于我们的网站服务器和我们的网站访问者之间,其原理是缓存了我们服务器上的页面,所以实际用户建立的 HTTPS 连接是用户的浏览器与 Kloudsec 之间的。

使用 Kloudsec 的好处

使用 Kloudsec 的风险和影响

接下来,能做的就是祈祷 Kloudsec 不要挂了。:laughing:

其它做法

如果使用 GitLab 提供的 Pages 服务,那它直接支持添加自定义域名的 SSL 证书,可以配合免费申请的 SSL 证书一起使用。详情可见 零成本打造安全博客的简单办法.