早上在弄GitHub Pages的Jekyll博客的自定义域名的HTTPS时遇到了问题,所以在这里记录一下过程。
GitHub Pages 博客 初始域名
每个GitHub 博客都有初始域名,类似xxx.github.io
在2018年之前,GitHub的初始域名是不能使用https
的,现在GitHub Pages的初始域名会强制HTTPS
,也会强制http
跳转https
:
Enforce HTTPS
— Required for your site because you are using the default domain (xxx.github.io)
HTTPS provides a layer of encryption that prevents others from snooping on or tampering with traffic to your site. When HTTPS is enforced, your site will only be served over HTTPS.
所以从安全角度来看,GitHub Page默认的配置是足够安全的。
但缺点是原始域名不够个性化。
自定义域名
官方文档:Managing a custom domain for your GitHub Pages site - GitHub Help
大部分人都会使用自定义域名,可以在设置中配置或者在仓库中添加文件CNAME
,里面只能配置一个域名,想要配置多域名需要自己设置网页跳转。
我使用的是cloudflare的CDN和域名管理。
比如说配置域名xxxx.com
,随后在域名运营商那里设置DNS,增加CNAME
记录:
Type | Name | Content | TTL | Proxy status |
---|---|---|---|---|
CNAME | xxxx.com | xxx.github.io | Auto | DNS only |
除了CNAME,也可以配置A记录:
Type | Name | Content | TTL | Proxy status |
---|---|---|---|---|
A | xxxx.com | 185.199.108.153 | Auto | DNS only |
A | xxxx.com | 185.199.109.153 | Auto | DNS only |
A | xxxx.com | 185.199.110.153 | Auto | DNS only |
A | xxxx.com | 185.199.111.153 | Auto | DNS only |
自定义域名是无法直接使用https
,因为 GitHub服务器上无法配置我们的域名的证书
自定义域名的HTTPS配置
CDN的HTTPS
配置自定义域名的HTTPS是比较麻烦的一件事情,最简单的做法用 cloudflare 的 CDN。
1.把Proxy status
改为Proxied
2.在SSL/TLS
中设置SSL/TLS encryption mode
为FULL
,把Edge Certificates
中把Always Use HTTPS
打开。
更改设置后过10分钟左右,再访问域名就是HTTPS。
这里我要说一下,因为cloudflare
的免费版的cdn用的人很多,而且没有针对国内网络做优化,所以在国内访问会变慢很多。
推荐使用国内不需要备案的CDN或者使用 CAA的方法实现HTTPS。
我使用的是nodecache
,注册链接:Nodecache
通过该链接注册,送1T流量包
在配置中新增CDN配置,并在回源 HOST
中配置为自己的域名,如xxxx.com
在https
中上传证书,并开启强制HTTPS。
CAA的HTTPS
官方文档:Troubleshooting custom domains and GitHub Pages - GitHub Help
GitHub使用letsencrypt
提供的CAA
证书签名服务:Certificate Authority Authorization (CAA) - Let’s Encrypt - Free SSL/TLS Certificates
需要说明的是有些域名服务商是不提供CAA
的选项。
配置如下:
Type | Name | Content | TTL | Proxy status |
---|---|---|---|---|
CAA | xxxx.com | 0 issue letsencrypt.org | Auto | DNS only |
查询DNS
:
-> % dig caa xxxx.com
;; ANSWER SECTION:
xxxx.com. 3599 IN CAA 0 issue "comodoca.com"
xxxx.com. 3599 IN CAA 0 issue "digicert.com"
xxxx.com. 3599 IN CAA 0 issue "letsencrypt.org"
xxxx.com. 3599 IN CAA 0 issuewild "comodoca.com"
xxxx.com. 3599 IN CAA 0 issuewild "digicert.com"
xxxx.com. 3599 IN CAA 0 issuewild "letsencrypt.org"
等待大约10分钟,到GitHub仓库中发现Enforce HTTPS
配置中的文字内容变为如下:
Not yet available for your site because the certificate has not finished being issued.
Please allow 24 hours for this process to complete.
如果没变,说明没配置好或者DNS还没刷新成功。
一般来说配置证书不用等24小时,过几个小时后回来看,可以选中按钮,打开后自定义域名的HTTPS配置完成。
文档信息
- 本文作者:last2win
- 本文链接:https://last2win.com/2020/02/21/github-pages-https/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)