提升网站访问安全性,网络链接都是加密的 (PS:虽然SSL
并非无懈可击的,可是咱们应该尽量提升窃听成本)。css
目前愈来愈多的浏览器会判断当前站点支不支持https协议,提升用户信任度,体验好.html
例如:据外媒报道,从2017年1月份正式发布的Chrome 56开始,Google将把某些包含敏感内容的HTTP页面标记为
“不安全”
,好比含有密码或支付表单信息。Google最终目标是将全部打破了https链接的HTTP页面,用特定的红色图标
给标记出来… 此举旨在唤起用户有关HTTP链接不安全、容易受到中间人攻击等危险的意识。经过HTTP链接发送的数据(好比密码和支付细节),会被通网络下别有用心的人轻易拦截。nginx
Mozilla也在作着一样的事情——其中就有经过提供免费的TSL证书,以便其为网站服务部署https链接的Let's Encrypt项目
。根据Chrome的遥测数据,在该浏览器天天加载的网页中,有近一半是经过https链接的。git
福利:使用了https以后,若是网站的访客是从其余已经使用了https的网站上跳转过来,你就能在Google Analytics
中获取更完整的来源信息。(说到这,不得不吐槽一下”墙”,它致使 Google Analytics
的信息延迟长达一天以上,最后我不得再也不将 Baidu Analytics
归入个人选择。)github
使用https以后,谷歌、百度等搜索排名权值(PR等)也会有相对提高。浏览器
And 我的缘由,做为一个有个性并略有强迫症的耿直Boy,终于在前一阵子给本身的博客弄了我的域名zhouie.cn(阿里云),怎么能够没有一把小小的绿锁头
?!缓存
默认状况下使用GitHub Pages的给定域名则支持http和https两种协议,可是若是使用自定义域名的话,则只能经过http://
访问,也就是说咱们在Github上搭建 Hexo 或Jekyll 主题博客
后,经过CNAME
绑定我的域名后,咱们只能经过http://
域名来访问。若是访问https://XXX.github.io/
(即原来的GitHub Pages域名)将会被重定向到咱们的自定义域名
。但若直接访问https://咱们的自定义域名
,浏览器会报SSL_DOMAIN_NOT_MATCHED
警告。安全
附:
在Github上搭建 Hexo 或Jekyll 主题博客
,这个网上教程不少,提供一篇我以前有写过的一篇教程Jekyll 搭建我的博客。服务器
那么怎么给本身的域名加上https
呢?这个时候就须要使用第三方网站的证书了。而GitHub Pages并不支持上传SSL证书。markdown
我在Google、Bbaidu上找相关解决办法时,又看到这样一个帖子:GitHub Pages 自定义域名启用 SSL,各位有什么建议?。
从网上提供的信息来看,目前方案主要有两种:
本身购买证书,部署到一台机器,机器部署nginx
,stunnel
等代理软件,反向代理到GitHub pages站点,域名指向代理机器IP(收费的SSL服务确定是比免费的更加周到,通常收费的SSL都会提供端到端的加密,可是价格不菲,不推荐);
使用CloudFlare提供方案1相似的设置(推荐)
CloudFlare 是一家CDN提供商,它提供了免费的https服务
(但不是应用SSL证书)。实现模式就是,用户到CDN服务器的链接为https
,而CDN服务器到GithubPage服务器的链接为http
,就是在CDN服务器那里加上反向代理。
在网上还找到这样一种解释
Cloudflare 提供一种被他们称之为Universal SSL
的服务,可让任意HTTP
站点支持HTTPS
。它的原理是当访客使用HTTPS
访问站点的时候,从访客到 Cloudflare 这段是加密的,而后从 Cloudflare 到站点这段是明文的。虽然不是全程加密,可是也能很大程度上解决中间人,若是从 Cloudflare 到站点的信道相对可靠的话
name server
修改成CloudFlare的name server
。Crypto
设置SSL为Flexible
(等待必定时间实现创建链接后,就能够经过https
来访问本身的 GithubPage )。Page Rules
中设置路由规则。通常状况下,利用Always use https
设置两条规则,规则连接分别为http://域名/*
与http://域名/
(开启https强制跳转)。还有其余的一些,例如Cloudflare还提供免费的CDN
和缓存技术
,让浏览者有更好的体验~~
建立CloudFlare账户,并添加网站
首先你已经有本身的自定义域名
的GitHub Pages ,个人 GitHub Pages CNAME文件写的是 zhouie.cn
明确一下咱们的实现目标: 当访客输入
zhouie.cn
强制跳转使用https,访问wwww.zhouie.cn
也会跳转到https://www.zhouie.cn
若是你尚未Cloudflare帐号,点击注册
登录后,点击这里 增长你的域名,以下图,输入你的域名,例如 zhouie.cn
并点击Begin Scan
注意不要写
WWW
前缀,大约60秒便可完成域名解析扫描。完成后点击Continue Setup
继续下一步
你看到DNS记录(包括子域)列表
以后,按照下图提示设置后,其中cname
是为了重定向www
备的,点击Continue
下一步
选择免费计划,而后下一步~
到你域名控制面板修改
cloudflare
给出的域名服务器,我这里以阿里云
为例
在域名管理台
点击管理
注:虽然官方说明,域名服务器修改最长须要72小时生效,但我用域名作了本身测试,大约只须要 5~10 分钟,看到 Status: Active 便可
设置SSL
点击 crypto
菜单 , 而后设置Flexible SSL
,以下图
添加www重定向到https://yicodes.com
添加自动重定向到 SSL页面
添加SSL的教程就此完成,通常须要5~30分钟生效!!!
当咱们访问自定义域名,DNS指向的地址(Github Pages
的IP
)会在咱们的仓库中寻找cname
文件,判断目标文件和请求来源地址的域名一致后,Github Pages
会将errorlife.github.io
的内容返回给用户。
Ok,这是一个比较完整的过程,可是在解析的途中,看上面两张图(tracert一下这个”裸奔”站好了 :P),你会发现请求的地址是“美国Fastly公司CDN网络节点”,很明显这是Github的CDN,并且它只支持80端口,不支持443端口,免费的CDN通常不支持,而https默认就是使用443端口。
因此咱们就知道Github Pages在解析域名和原生地址所分配的是不一样的CDN,前者是不支持https的,然后者偏偏相反。
天下没有免费的午饭,坐享其成始终都是泡沫。因此在这个过程当中咱们究竟牺牲了什么?
修改域名的DNS服务器
为Cloudflare提供的地址才能使用这项服务;coding+github双线部署
,除非你使用Cloudflare的收费服务
,或者反向代理
,更多思路详见v2ex
提问的一个帖子。这个问题在我这儿并无出现过,但是从网上教程来看,由于以往(一两年前)引用的某些外部资源仍是http
的,会出现一些问题,好比:
生效后我发现个人网站是不太安全的状态,并且当我点击加载脚本以后,从不太安全的状态变成了不安全的状态。
v友的解决办法:
按下
F12
,尴尬的事情发生了,原来是配置文件和palceholder
在做怪,因为多说
的头像用的仍是http
,巧的是,没多久,多说
就下线关门了。
这就要求咱们对https协议理解通透,以后google了一下,发现https并不支持这种第三方引入资源…
【附:一文一图】