一、前言
之前 Github Pages 搭建的站点如果想要开启 https 有两种方法。一种是常规方法,即自己有服务器来设置证书;另一种则是直接使用 Cloudflare 提供的免费域名 SSL。
不过 2018 年 5 月 1 日 Github Pages 已经正式支持自定义域名强行开启 https,不过从证书信息看,也是 Cloudflare 这家的。
二、配置域名
域名使用 CNAME 指向自己的 Github Pages 项目主域,例如 millylee.github.io
,这里不推荐使用 A 记录,以免 IP 变动还得进行修改。配置完域名后可以在命令行下使用 dig <domain>
命令查看下是否生效。例如这里我使用 dig milly.me
显示如下信息,则说明域名配置正确。
三、项目配置
进入仓库中的「Settings」-「GitHub Pages」-「Custom domain」配置项,填写自定义域名保存后,Github 会自动在代码仓库中添加 CNAME 文件。如果配置完后一切顺利,你会看到
Unavailable for your site because a certificate has not yet been issued for your domain
之类的提示,这是因为 Github 会 24h 以内的时间来为你的域名生成相应证书,当然有的人可能几分钟或几小时就能完成,之后你就可以看到该选项可以勾选了。
如果是这之前就已经为自己的项目主页或个人主页绑定过域名,那该选项不仅不能勾选,可能还会有各种提示。比如我遇到了 Domain's DNS record could not be retrieved...
或 Domain does not resolve to the GitHub Pages server...
等提示。前者是说 DNS 记录还未生效,后者是说域名无法解析到 Github Pages 服务。于是等了 24 小时,该时间不仅是 DNS 全球最慢的同步时间,同时也是 Github Pages 最慢的证书生成时间。最后明确各个配置没有问题后,先将 Custom domain
清空保存,然后勾选 Enforce HTTPS
,接着重新填写域名并保存,刷新后面后发现终于可以勾选Enforce HTTPS
。
四、总结流程
- 域名使用 cname 指向
.github.io - github 项目中添加自定义域名(旧项目需要先清空域名再重新绑定)
- 经过最多 24h 后勾选
Enforce HTTPS
https启用成后,第一次访问提示证书不安全,什么原因啊
清空下缓存或换个浏览器试下,另外页面中也不要包含非 https 的资源。