使用 CloudFlare 爲 hexo 博客實現 HTTPS

博客地址之前一直都是默認的 secsilm.github.io,一直想換個自己的域名,正巧看到 NameBeta 上好幾個域名都好便宜,就準備買個搞搞,最後挑中了 alanlee.fun 這個域名。

把自己的博客域名換成自己買的域名並實現 HTTPS(GitHub Pages 不支持自定義域名 HTTPS),大概需要這麼幾個步驟(以在 namecheap 上購買域名爲例):

  1. 在 namecheap 購買自己心儀的域名
  2. 更新 GitHub 倉庫
  3. CloudFlare 端 DNS 配置
  4. namecheap 端更改 nameservers
  5. CloudFlare 端設置使用 HTTPS

第一步購買域名我就不贅述了,只是需要注意的是付款不支持支付寶,支持 PayPal。

以下假設已經購買到 alanlee.fun 這個域名。

更新 GitHub 倉庫

在你的 hexo 博客本地根目錄中的 source 目錄下增加一個 CNAME 文件(無後綴名),裏面寫上購買的域名,本文中即 alanlee.fun
cname
然後把更新部署到 GitHub 上:

hexo d -g

此時你應該可以在 GitHub 上看到 CNAME 文件了,並且在你的倉庫設置中也可以看到你的自定義域名也已經加上了,此時訪問 alanlee.fun 應該可以進入博客了,但是此時網址欄是沒有「小綠鎖」的(HTTPS),要想讓這個「小綠鎖」出現,我們需要使用 CloudFlare 的服務。
cname-github
settings

CloudFlare 端 DNS 配置

首先你需要註冊一個 CloudFlare 賬號並把自己的域名添加上去,這個過程很簡單,我就不贅述了。註冊完登陸之後,點擊下圖中的 DNS 選項卡,另一個 Page Rules 是我們一會兒要用到的。

然後如下圖一樣添加兩條記錄,Value 處都寫自己原來的博客地址,即是 your-github-username.github.com 這樣的形式,例如我的 secsilm.github.com

按理說我們下一步要在 Page Rules 那設置讓我們的域名使用 HTTPS 鏈接,但是你如果現在就這麼做的話你就會發現你設置不了。這是因爲你必須在域名提供商那把 nameservers 設爲 CloudFlare 的 DNS 才能使用他的 HTTPS 服務,所以我們現在得去 namecheap 那設置一下 nameservers,否則在 CloudFlare 上 Overview 處你的域名會顯示未激活狀態,而不是下面的 active 狀態:

namecheap 端更改 nameservers

登錄進 namecheap,點擊右上角 AccountDomain List,在 NAMESERVERS 處選擇 Custom DNS,然後填上 CloudFlare 的nameservers(可以在 CloudFlare 上 Overview 選項卡頁面找到):

至此,namecheap 端的更改就結束了。

CloudFlare 端設置使用 HTTPS

現在就只需要在 Page Rules 選項卡頁面創建幾個 page rules 就行了,免費用戶最多創建 3 個:

第一個 :
rule1

第二個 ,可選,讓所有非 WWW 的鏈接安全地轉到帶 WWW 的鏈接:
rule2

第三個 ,可選,這會在 CloudFlare 的 CDN 中緩存你的靜態頁面:
rule3

至此,alanlee.fun 已經可以安全的訪問了,「小綠鎖」已經出現了:
alanlee.fun

缺點

其實這種方法並不是百分百的 HTTPS 鏈接,你的博客和 CloudFlare 之間還是 HTTP 鏈接,瀏覽器和 CloudFlare 之間則是 HTTPS 鏈接,引用 CloudFlare 官方說明:

Firstly a word on security. If you are deploying a JavaScript app which communicates with remote APIs, be sure not to use this for sensitive data submissions. As GitHub themselves put it: “GitHub Pages sites shouldn’t be used for sensitive transactions like sending passwords or credit card numbers.” Also bear in mind your website source files are publicly accessible in a Git repository, so be extra careful about what you put there.

There are some things we can’t do; GitHub Pages doesn’t let us set custom headers, which unfortunately means we can’t do HTTP/2 Server Push right now.

References

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章