低成本將你的網站切換為 HTTPS

lsvih發表於2017-09-07

低成本將你的網站切換為 HTTPS

Google 的 Search Console 小組最近向所有站長髮了一封 email,警告 Google Chrome 將從 10 月起,在包含表單但沒有使用安全措施的網站中顯示警告資訊。

下圖為我收件箱裡的通知:

圖為 Google Search Console 團隊發來的關於 HTTPS 支援的通知
圖為 Google Search Console 團隊發來的關於 HTTPS 支援的通知

如果你的網站還不支援 HTTPS,那這個通知就直接與你相關。即使你的網站並沒有用到表單,也應當早日將網站遷移為 HTTPS。因為現在這項措施只不過是 Google“標識非安全網站”策略的第一步。他們在訊息中明確表示:

這個新的警告僅僅是將所有通過 HTTP 提供服務的頁面標記為“不安全”的長期計劃的一部分。

當前 Chrome 用以表示支援 HTTP 的站點以及支援 HTTPS 站點的 UI 設計
當前 Chrome 用以表示支援 HTTP 的站點以及支援 HTTPS 站點的 UI 設計

問題在於:安裝 SSL 證照、將網站 URL 從 HTTP 轉換為 HTTPS、以及將所有連結和影象連結等都換成 HTTPS 並不是一項簡單的任務。誰會為了自己的個人網站去費時費錢呢?

我使用 GitHub Pages 免費託管了一系列的網站和專案,其中的一部分還使用了自定義域名。因此,我想看看我能否快速、低成本地將這些網站從 HTTP 遷移為 HTTPS。最後我找到了一種相對簡單且低成本的方案,希望能夠幫助到你們。下面讓我們來探究一下這種方法吧。

對 GitHub Pages 強制啟用 HTTPS

託管在 GitHub Pages 上的網站可以通過設定很方便地啟用 HTTPS。進入專案設定頁面,勾上“Enforce HTTPS”即可。

在 GitHub Pages 設定中啟用專案的 HTTPS 支援
在 GitHub Pages 設定中啟用專案的 HTTPS 支援

但我們仍然需要 SSL

第一步十分的簡單,但它並不符合 Google 對安全網站定義的要求。我們啟用了 HTTPS 設定,但是沒有為使用自定義域名的網站安裝、提供 SSL 證照。直接使用 GitHub Pages 提供的網址的站點已經完全符合要求了,但是使用自定義域名的站點必須要進行一些額外的步驟,讓其在域名的層面上使用安全證照。

還有個問題,SSL 證照雖然並不貴,但也需要花一筆錢,在你儘可能希望降低成本時可不想為此增加花費。所以得找個辦法解決這個問題。

我們可以通過 CDN 免費試用 SSL!

在這兒就不得不提 Cloudflare 了。Cloudflare 是一個內容分發網路(CDN)提供商,同時它也提供分散式域名服務,這也意味著我們可以利用他們的網路來設定 HTTPS。使用這個服務真正的好處在於他們提供了免費的方案,讓這一切成為可能。

另外,值得一提的是在 CSS-Tricks 論壇裡也有許多帖子描述了使用 CDN 的好處。雖然這篇文章中主要探討的是安全性問題,但其實 CDN 除了能幫你使用 HTTPS 之外,還是降低伺服器負載、提升網站效能的絕佳方式。

在下文中,我將簡述我使用 Cloudflare 連線 Github Pages 的步驟。如果你還沒有 Cloudflare 賬號,你可以點選這兒註冊賬號再跟著步驟操作。

第一步:選擇“+ Add Site”選項

首先,我們需要告訴 Cloudflare 我們使用的域名。Cloudflare 將會掃描 DNS 記錄,以驗證域名是否存在,並檢查域名的公開資訊。

Cloudflare 的“Add Website”設定
Cloudflare 的“Add Website”設定

第二步:檢視 DNS 記錄

Cloudflare 掃描 DNS 記錄後會將結果展示出來供你檢視。如果 Cloudflare 認為這些資訊符合要求,就會在“Status”列中顯示一個橙色的雲的圖示。你需要檢查這份報告,確認其中的資訊與你在域名註冊商中留的資訊相符,如果沒問題的話,點選“Continue”按鈕繼續。

Cloudflare 給出的 DNS 記錄報告
Cloudflare 給出的 DNS 記錄報告

第三步:獲取免費方案

Cloudflare 會詢問你需要哪種級別的服務。瞧~你可以在這兒選擇“免費”選項。

Cloudflare 的免費方案選項
Cloudflare 的免費方案選項

第四步:更新域名解析伺服器(NS 伺服器)

這一步中,Cloudflare 給我們提供了其伺服器地址,我們要做的就是將這個地址貼上到自己的域名註冊商中的 DNS 設定裡。

在域名註冊商設定中使用 Cloudflare 提供的域名解析伺服器
在域名註冊商設定中使用 Cloudflare 提供的域名解析伺服器

這一步其實並不困難,但你可能會有些疑惑。你的域名註冊商可能會提供這一步的操作指南。例如點此檢視 GoDaddy 的指南,瞭解如何通過他們的服務更新域名解析伺服器。

完成這一步之後,你的域名將會很快被對映到 Cloudflare 的伺服器上,這些伺服器將成為域名與 Github Pages 之間的中間層。不過,這一步需要耗費一些時間,Cloudflare 可能需要 24 小時來處理這個請求。

如果你沒有用主域名,而是用了子域名來使用 GitHub Pages,則需要額外進行一步操作。開啟你的 GitHub Pages 設定頁面,在 DNS 設定中新增一條 CNAME 記錄,設定它指向 <your-username>.github.io,其中 <your-username> 是你的 Github 賬號。此外,你需要在 GitHub 專案的根目錄下新增一個檔名為 CNAME 的無字尾名文字文件,其內容為你的域名。

下面的螢幕截圖為在 Cloudflare 設定中將 GitHub Pages 子域名新增為 CNAME 記錄的例子:

將 GitHub Pages 子域名加入 Cloudflare
將 GitHub Pages 子域名加入 Cloudflare

第五步:在 Cloudflare 中啟用 HTTPS

現在,我們從技術上說已經為 GitHub Pages 啟用了 HTTPS,但是我們還需要在 Cloudflare 中做同樣的事。Cloudflare 把這個功能稱為“Crypto”,不僅強制開啟了 HTTPS,還提供了我們夢寐以求的 SSL 證照。現在先讓我們為 HTTPS 啟用 Crypto,之後的步驟中我們會獲取到證照的。

Cloudflare 主選單中的 Crypto 選項
Cloudflare 主選單中的 Crypto 選項

開啟“Always use HTTPS”選項:

在 Cloudflare 設定中開啟 HTTPS
在 Cloudflare 設定中開啟 HTTPS

此時,任何來自瀏覽器的 HTTP 請求都會被切換成更安全的 HTTPS。我們離“取悅” Google Chrome 又進了一步。

第六步:使用 CDN

我們現在正在用 CDN 來獲取 SSL 證照,所以我們還可以利用它的效能優勢來得到更多的好處。我們可以通過自動壓縮檔案、延長瀏覽器快取過期時間來提升網站效能。

選擇“Speed”選項,允許 Cloudflare 自動壓縮網站資源:

允許 Cloudflare 自動壓縮網站資源
允許 Cloudflare 自動壓縮網站資源

我們還可以通過設定瀏覽器快取過期時間來最大化地提升效能:

在 Cloudflare 的 Speed 設定中指定瀏覽器快取
在 Cloudflare 的 Speed 設定中指定瀏覽器快取

將過期時間設定為比預設選項更長,可以讓瀏覽器在訪問網站時不再需要每次都去請求那些沒有變更過的網站資源。這將讓訪客在一個月內再次訪問你的網站時節省額外的下載量。

第七步:使用安全的外部資源

如果你的網站還使用了一些外部資源(我們很多人都這麼做),那麼還需要確保這些外部資源是安全的。例如,如果你使用了一個 Javascript 框架,但沒有使用 HTTPS 源,那麼 Google Chrome 將會認為其降低了我們網站的安全性,因此我們需要對其進行改進。

如果你使用的外部資源不提供 HTTPS 源,那麼你可以考慮自己對其進行託管。反正我們現在已經有了 CDN,做託管服務的負載並不成問題。

第八步:啟用 SSL

已經做到這一步啦!我們已經在 GitHub Pages 設定中開啟了 HTTPS,現在還缺少自定義域名與 GitHub Pages 的連線證照。Cloudflare 提供了免費的 SSL 證照,我們可以在網站中使用它。

開啟 Cloudflare 的 Crypto 設定頁面,確認 SSL 證照處於啟用狀態:

Cloudflare 的 Crypto 設定中顯示 SSL 證照為啟用狀態
Cloudflare 的 Crypto 設定中顯示 SSL 證照為啟用狀態

如果證照處於啟用狀態,在主選單中切換到“Page Rules”頁面,選擇“Create Page Rule”選項:

在 Cloudflare 設定中建立頁面規則
在 Cloudflare 設定中建立頁面規則

然後點選“Add a Setting”,選擇“Always use HTTPS”選項:

對整個域名都強制使用 HTTPS!注意圖中文字中的星號很重要
對整個域名都強制使用 HTTPS!注意圖中文字中的星號很重要

點選“Save and Deply”,恭喜你!現在,我們擁有了一個在 Google Chrome 眼中完全安全的網站,並且在遷移的過程中我們並不需要接觸、修改很多程式碼。

總結

Google 這樣推進 HTTPS 意味著前端開發者們在開發自己的網站、公司網站、客戶網站的時候需要優先考慮 SSL 支援。這一舉措將會促使我們將站點向 HTTPS 遷移。而使用 CDN 可以讓我們使用免費的 SSL 並提升網站效能,如此超值的事何樂而不為呢?

你記錄過遷移到 HTTPS 的經歷嗎?在評論裡留言你的遷移方法,讓我們相互對比吧。

享受你的既安全又快速的網站吧!


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOSReact前端後端產品設計 等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章