提升網站訪問安全性,網絡鏈接都是加密的 (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並不支持這種第三方引入資源…
【附:一文一圖】