LoginSignup
40
30

More than 3 years have passed since last update.

master.keyが見つからない問題 [初見殺し] - はじめてのデプロイで嵌るポイント(Rails 5.2以降)

Last updated at Posted at 2020-07-01

master.keyが見つからない問題 [初見殺し] - はじめてのデプロイで嵌るポイント(Rails 5.2以降)

デプロイ環境構築の過程でmaster.keyなるものが必要に
(2020.9.28: これで悩む方は多そうなので補足追記しました )

Railsアプリのローカル環境にもconfig/master.keyがみつからない
(これは私の環境、経緯によるところが大きいかと)

環境

Rails 6.03

原因

master.key.gitignoreに含まれており、git cloneの過程で失われたと思われる
- 私の環境では開発途中で環境を変化(Cloud9 >> ローカル)に移行した際のgit cloneで失われたかと
- その他多いのが、開発環境 -> デプロイ環境移行時にmaster.keyが失われるケース

解決

master.keyの中身がわかる場合

ローカル環境にはmaster.keyがある場合など、master.keyの中身を知ることができる場合はmaster.keyを新規作成することで解決できます

vi config/master.key

で新規作成、一行目にmaster.keyの中身を追記してエディタを閉じる

デプロイ環境でmaster.keyが無いと言われているのであれば、EC2なりデプロイ先のサーバーにmaster.keyを配置しましょう

master.keyの中身がわからない場合

credentials.yml.encに機密情報を追記した覚えがない、運用するつもりもない、
または記述した内容が消えてしまっても再現可能な場合にこの方法を試してください

一旦credentials.yml.encを削除して、
master.keycredentials.yml.encもない状態をつくる

そして次のコマンドを入力

sudo EDITOR="vi" rails credentials:edit

すると
credentials.yml.encmaster.keyが新たに生成される

ただし

$ vi config/master.key

では中身が空っぽ

$ sudo vi config/master.key

とするとようやく中身が確認できました

この方法はデプロイ環境でcredentials.yml.encを運用しない場合にも有効で
サーバー上でも同様にmaster.keyがない状態で
一旦credentials.yml.encを削除し
アプリのルートディレクトリでローカルでやったことと同様に

sudo EDITOR="vi" rails credentials:edit

とすると同様にcredentials.yml.encmaster.keyが生成されます

そもそもcredentials.yml.encってなんぞ

機密情報の不用意な公開を防ぐための仕組みだそうです
credentials.yml.encは鍵穴、master.keyが鍵の関係にあって、
正しいmaster.keyを用意することで、暗号化されたcredentials.yml.encの中身を復号化し利用することができるようになる

DBのパスワードなどをcredentials.yml.encに記述して暗号化保護、運用するように想定されていると理解

以下の記事でcredentials.yml.encにAWSのaccess_key_id, secret_access_keyを追記したり、
それを取り出す方法を試みています
[Rails6対応, 公式SDK] AWS SESを使ってRailsから送信元が独自ドメインのメールを送ってみた - Qiita

ただしこのような運用をするのであれば、master.keyを本番環境にポンと置いておくのもどうかと思うので
環境変数で渡すなりの運用方法が必要そうです

次の記事参考になりそうです
Railsのcredentials.yml.encは、どういった運用ができるか? - LiBz Tech Blog

参考

Rails5.2から追加された credentials.yml.enc のキホン - Qiita
【Rails】「credentials.yml.enc」と「master.key」の使い方について詳しく解説!|TechTechMedia

40
30
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
40
30