30分鐘讓網站支援HTTPS
對於一個良好和安全的網路——並且也為了更快的效能,新的API網路例如Service Workers,更佳的搜尋排名,還有——在你的網站上使用HTTPS是關鍵。這裡我會指導大家如何輕鬆搞定。
我不是安全專家也不是搞伺服器的,所以這對我而言也是一種有趣的經歷,而記錄這個過程可以讓其他任何人也能很快地做到這些。包括一些暫時的停頓時間,我總共只花了20-30分鐘。
獲得證書
有一些官方出售的證書,但從我的經驗來看,最容易上手是Let’s Encrypt。它也是免費的,而且背後有一些主要的贊助商,例如Mozilla,Chrome,Akamai和Cisco。
通過Let’s Encrypt為你的網站生成證書的最快方法是使用SSL For Free。然後,你便可以選擇Automatic FTP Verification或者Manual Verification。
選擇好了之後,你就可以得到:
- 針對網站的SSL證書
- 證書私鑰
- CA /鏈證書
安裝證書
下面,針對你的託管服務提供商以及你的伺服器型別,或者如果你是自己託管的話,有不同的方法。就我而言,我對這個網站使用Media Temple,並且它們在Twitter上非常有用,而且它們的線上支援聊天會指點我正確的方向。
所有我需要做的是:
- 進入帳戶中心。正如Media Temple有一個,我敢肯定它適用於大部分的託管選項。
- 選擇匯入SSL證書,新增我之前得到的SSL證書,私鑰,CA /鏈證書之前。
- 成功!
好了嗎,沒有。第3步是騙人的。當我在第2步中進入我的金鑰時,我會得到一個錯誤說我的私鑰是無效的。我慌了一下,然後開始去找問題出在什麼地方。Media Temple支援指引我到Let’s Encrypt論壇上的“Error adding cert, Invalid private key”討論中。
原來需要轉換私鑰到RSA格式,使用下面的程式碼行就可以在終端中快速轉換:
sudo openssl rsa -inform pem -in /etc/letsencrypt/live/www.example.com/privkey.pem -outform pem | less
當然要相應地改變上面的域和路徑。然後複製輸出和提交/另存為私鑰。
更多高階設定
如果你正在某個地方執行你自己的伺服器或虛擬機器,或者恰好沒有針對主機的簡單帳戶中心選擇,那麼我推薦你閱讀下面這些文章考慮手動安裝:
- Tim Kadlec的《Taking Let’s Encrypt for a Spin》
- Jeremy Keith的《Switching to https》
驗證證書安裝
安裝好了之後,驗證證書的一個簡單方法是使用SSL Checker以發現任何潛在的問題。然後,當你使用https://訪問你的網站的時候,所有一切都應該顯示良好和安全。然而在現實生活中很少是這樣的情況。要小心混合的內容,即部分內容通過https://提供服務,而一些內容使用的則是http://。使用http://的內容將不顯示。
注意:不要使用相對路徑/協議相關的URL,即/css/style.css。它會對可能的端點攻擊開放,而且,從http://你可以隨時請求https://資源,反之則不能。
一旦確保安全之後,你應該可以在所有的web瀏覽器中看到掛鎖圖示,在位址列的URL旁邊。如果沒有顯示,那麼可以使用偉大的服務Why No Padlock? 來找出可能的問題。我敢打賭,你的1%的時間用來改變內部引用到https://,然後剩下99%的時間用來搞清楚有關第三方的內容,以及如何安全地包含這些內容。
強制SSL / HTTPS用於所有請求
一旦網站安全並在可以平穩執行HTTPS之後,沒有理由不確保所有請求都通過SSL。
正如使用.htaccess和mod_rewrite的Force SSL/https中概述的那樣,下面有一個程式碼片段可以用來新增.htaccess 檔案以確保:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
一起試試新增HTTPS到你的網站吧!你值得擁有。