SSL in production

這節要實作 SSL(Sockets Layer (SSL))功能。當在網站上註冊、提交表單時,使用者的名字、email、密碼會在網路上傳輸,因此很有可能被攔截,透過使用 SSL,讓資料在離開瀏覽器時經過加密相關訊息。我們可以只在註冊頁面加密,不過要整個網站都加密也可以實現。整個網站都啟用 SSL 功能時,也對之後要實作的登入功能有幫助,還可以防禦 session hijacking(之後會講到)。

啟用 SSL 非常簡單,只要在 production 環境的文件 production.rb 裡去掉一行程式碼的註解即可。我們需要做的就是設定 config 變數,強制在 pproduction 環境中啟用 SSL:

config/environments/production.rb

Rails.application.configure do
  .
  .
  .
  # Force all access to the app over SSL, use Strict-Transport-Security,
  # and use secure cookies.
  config.force_ssl = true
  .
  .
  .
end

接著,我們需要在遠端 server 設定 SSL。在 production 環境使用 SSL 意味著你必須要在自己的網域(domain)購買和設定 SSL 證書(SSL certificate)。不過因為 APP 是在 Heroku 上運作,所以可以直接使用 Heroku 的 SSL 認證就好。

所以一旦部署到 Heroku 之後,SSL 就可以使用了。如果需要在自訂的網域使用 SSL(例如 www.example.com),可以參考 Heroku’s page on SSL