为Github page绑定自定义域名并实现https访问


实现目标

  • 获取自定义域名yucichueng.me;
  • 将上述域名(及www域名)解析到yucichueng.github.ioIP地址;
  • 将域名解析服务托管于CloudFlare;
  • 获取SSL证书,使网站可以通过https访问。

    获取自定义域名

    我购买的域名是yucicheung.me
    一级域名meGoDaddy网站进行购买。心仪的域名可以在网站whois查看是否被注册,未被注册可在相应域名商处购买。
    Tips:如果是在Godaddy购买的域名,建议购买隐私服务(不泄露个人信息),不是很便宜,所以建议可以直接从国内域名商处购买,赠送隐私保护服务。

    域名解析到Github page

    购买域名后,在对应域名供应商处一般会提供域名解析服务,我们需要对解析服务进行配置。
    对我来说,就要在Godaddy域名解析服务处进行配置。

    修改域名服务商解析记录

  1. 点击主页右上角自己的账户名–>点击manage my domains–>在My Domains选择Manage DNS;

    manage_DNS
  2. 添加CNAMEA解析记录,使www网址和@(即本身)都指向自己的github page;
    按以下表格分别添加ACNAME两条解析记录:
类型type 主机host 指向points to TTL(Time To Live)
A @ github page的IP 地址 600
CNAME www github page的网址 600
A记录
用来指定域名的IPv4地址
如要将域名指向一个IP地址
添加A记录

CNAME
如要将域名指向另一域名
再由该域名提供ip
添加CNAME记录
www
解析后域名为www.yucicheung.me

@
解析主域名yucicheung.me

*
泛解析,匹配其他所有域名,*.yucicheung.me
对于A记录:
要指向IP地址

对于CNAME:
要指向一个域名

指地方dns缓存域名记录的时间,缓存失效后会再次获取

600:
建议采用600

60:
如果经常修改IP可用(修改可快速生效),长期使用略影响解析速度

3600:
如果IP极少变动(一年几次),可选择 3600,解析速度快

Tips:github page的IP地址可以通过以下命令获取:

1
ping yucicheung.github.io

添加github仓库的域名解析记录

  1. 按以下命令在自己的github仓库中添加CNAME文件,其中填入购买的域名。或者可以在仓库的settings中设置Custom Domain设置好自己的域名,github会自动添加CNAME文件。

    1
    2
    $ touch CNAME
    $ echo 'yucicheung.me'> CNAME
  2. 稍等一下就可以通过购买域名yucicheung.me访问yucicheung.github.io了,但是这时只能通过http访问自定义域名而非https

通过HTTPS访问自定义域名

在完成上述操作以后,只能通过HTTP协议传输(明文传输),于是在通过自定义域名访问自己的github page时,发现浏览器提示该网址不安全,没有合格的安全证书,不能通过https(密文传输)访问。

HTTP与HTTPS

HTTP是明文传输协议,传输内容容易被嗅探和篡改。
HTTPS,即HTTP over SSL/TLS,是添加了一层SSL(Secure Sockets Layer,安全套接层),或者是TLS(Transport Layer Security,传输层安全协议),所以HTTPS就可以视为HTTPSSL/TLS协议的组合。


HTTPS能做到良好的保密性(防嗅探),真实性(防篡改),完整性(防域名劫持和域名欺骗)。

SSL证书

SSLTLS的前身,但TLS通常也被标志为SSL
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息(会话秘钥),服务器收到密文后,用自己的私钥解密。
这个公钥就放在数字证书中。只要证书是可信的,公钥就是可信的。

申请SSL证书

SSL证书由你的NS(Name Server,域名服务商)颁发,由于GoDaddy的SSL证书超级贵,所以我们可以迁移到免费提供SSL的NS处,比如国内的DNSpod(国内都需要备案),还有国外的NetlifyCloudflare,从速度和操作性考虑,本人选择了Cloudflare

  1. Cloudflare官网注册;
  2. 根据指引点击Add Site,添加自定义域名yucicheung.me,会自动开始扫描DNS解析记录;
  3. 扫描完成后,Cloudflare会选择给我们分配两个NS地址,将这两个地址替换GoDaddy上的原NS地址,等待生效;

    change_ns
  4. Cloudflare上检查自己网站的状态,显示为Active时表示NS更改成功;

    active
  5. Cloudflare将自己网站的SSL状态改变为Full状态,等待Status变为Active Certificate,通常生效需要十几分钟。

    ssl
  6. 再访问自定义域名时,就可以看见是https传输,网址前也有一把绿色小锁,可以看到这个证书其实是Cloudflare的证书。

    https
    ssl

    CDN:关于访问速度

    如果因为NS在国外,担心访问速度,可以稍微放心。
    Cloudflare本身提供CDN(content delivery network,内容分发网络)服务,是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,就近获取网络内容传递给用户。
    免费服务一般只能加速css、js的引用,而对于html图片的加速通常是付费服务。
    实验过之后,确实是图片加载会稍慢一些,但是整体速度是可以接受的,如果实在介意速度,建议通过国内NS解析网址
    另:发现Cloudflare已经和baidu合作针对企业级用户启动加速服务,一个节点服务海外访问者,另一个服务国内访问者。

    总结

  • 最后实现的整个系统可以这么理解:就相当于由github提供主机(相当于寄存在github的服务器),自己购买域名,域名指向服务器文件进行展示。
  • 原本的github主页,域名解析由GitHub负责,SSL证书由github.com提供,所以可以安全访问。现在的域名解析由Cloudflare服务,SSL证书也由其提供。
文章目录
  1. 1. 获取自定义域名
  2. 2. 域名解析到Github page
    1. 2.1. 修改域名服务商解析记录
    2. 2.2. 添加github仓库的域名解析记录
  3. 3. 通过HTTPS访问自定义域名
    1. 3.1. HTTP与HTTPS
    2. 3.2. SSL证书
    3. 3.3. 申请SSL证书
  4. 4. CDN:关于访问速度
  5. 5. 总结
|