Rails master.key

問題描述

在開發與部署 Rails 專案的時候,我們會需要存放一些敏感的資訊,例如 API key、secret key 等等,這些資訊可以被加密存放到 config/credentials.yml.enc 檔案中。
而這些加密的資訊需要一個 master.key 來進行解密,而這個 master.key 通常會存放在 config/master.key 檔案中。以下是關於 master.key 的相關操作。

解決方法

  1. 執行 rails credentials:edit 會同時檢查 config/master.key 是否存在,如果不存在,則會提示你建立一個新的 master.key。並且會開啟 credentials.yml.enc 檔案讓你進行編輯。
    1
    2
    3
    4
    $ EDITOR="code --wait" rails credentials:edit  # 使用 VSCode 編輯 credentials.yml.enc
    $ EDITOR="vi" rails credentials:edit # 使用 vi 編輯 credentials.yml.enc
    $ EDITOR="nano" rails credentials:edit # 使用 nano 編輯 credentials.yml.enc
    # ...以此類推,可以指定其他編輯器
  2. credentials.yml.enc 的內容如下,預設會看到 secret_key_base 這個 key,還有其他加密後的資訊。
    1
    secret_key_base: ggg4ded928834c777106xxxe2453739d22cf4b2046d161da8575e0dbbulahbulah
  3. 如果需要產生新的 master.key,可以執行 rails credentials:setup,這樣會同時產生 config/master.key 檔案,以及 credentials.yml.enc 檔案。
    1
    $ rails credentials:setup
  4. master.key 記得要加入到 gitignore 中,避免被 commit 到遠端倉庫中。並且不要隨意分享給其他人。
  5. 如果需要更換 master.key,可以執行 rails credentials:regenerate,這樣會重新產生 credentials.yml.enc 檔案,並且不會改變 master.key
    1
    $ rails credentials:regenerate
  6. 如果需要查看 credentials.yml.enc 檔案的內容,可以執行 rails credentials:show
    1
    $ rails credentials:show

參考資料