3
1

Rails – 今更だけど credentials.yml.enc / secret_key_base の扱いがよく分かってなかった

Last updated at Posted at 2023-04-03

つながり

  • credentials.yml.enc でどんな値でも暗号化/複合できる
  • master.key の値で credentials.yml.enc を複合出来る
  • secret_key_base は秘密情報なので credentials.yml.enc に含めておくのが良い

ということらしい

rails new

そもそも rails new した時に

  • config/credentials.yml.enc
  • config/master.key

がセットで生成されるようだ

master.key はただ復号用の値を記録しただけのファイルなのだが、この値があれば credentials.yml.enc を複合したり編集したり出来る

だが master.key.gitignore に含まれているので git操作で消えている場合もあるだろう

編集

bin/rails credentials:edit でファイル編集が出来るはずなのだが怒られた

  • master.key がないので自動生成してくれた
  • config/credentials.yml.enc を暗号化したのは別の master.key だったので複合は出来ない

ということみたいだ

EDITOR=vi bin/rails credentials:edit
Adding config/master.key to store the encryption key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Save this in a password manager your team can access.

If you lose the key, no one, including you, can access anything encrypted with it.

      create  config/master.key

Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?

credentials の編集が初めての場合は credentials を削除してやり直してしまおう

rm config/credentials.yml.enc
EDITOR=vi bin/rails credentials:edit

以下のようなテンプレ内容が生成されるので、そのまま保存してみる

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

再編集

これで準備が整った
master.key ファイルがあればこのまま編集し続けられる。

EDITOR=vi bin/rails credentials:edit

master.key ファイルが無くても環境変数で値指定すれば複合・編集が可能だ

RAILS_MASTER_KEY=yyyyyyyyyyyyyyyy EDITOR=vi bin/rails credentials:edit

編集できない場合

エディタ指定が変だとエラーもなく終了してしまうようだ

EDITOR=waaaaaaa bin/rails credentials:edit
File encrypted and saved.

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1