LoginSignup
2
2

More than 3 years have passed since last update.

本番環境とcredentials.yml.enc

Last updated at Posted at 2020-08-04

この記事で伝えたいこと

production環境の秘匿情報をcredentialsで扱う前にしっかり調べましょう

基礎知識 暗号化と復号について

〜開発環境〜
$ rails newした時config/master.keyと共にcredentials.yml.encは作成されるようです。
そしてこのmaster.keyを使用して暗号化、復号します。
(master.keyは大切に保管しましょう)

秘匿情報の編集には以下のコマンドを実行します。

$ rails credentials:edit          #master.keyが存在しない時実行すると新たに作成する

〜本番環境〜
暗号化と復号にはsecret_key_baseも必要になります。
ローカルで$ rails secretコマンドを実行し作成します。
事前にローカルのmaster.keyをサーバーにも配置しておくこと。

本番環境で気をつけること

credentials.yml.encの暗号化、復号にはmaster.keyを使用すると先ほど書きました。このmaster.key、デフォルトでgitignoreに登録されているためGitの管理対象外となっています。

ここからが大切です。
EC2でgitのリポジトリをクローンしてもこのmaster.keyは当然サーバー上にやってきません。
その事を忘れて本番環境の秘匿情報を追加しようと思い$ rails credentials:editコマンドを実行すると...サーバー上にはmaster.keyが無いので新たに生成されてしまいます。

この時点ではローカルのmaster.keyとサーバーのmaster.keyが異なりcredentials.yml.encの復号ができなくなります。

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

こんなエラーや、

ActiveSupport::MessageEncryptor::InvalidMessage

こんなエラーが発生します。

もう一度credentialsの復号がしたい

ローカルのmaster.keyをサーバーに置いてあげれば良いです。

master.keyを紛失した場合は、config/credentials.yml.encを削除してから以下のコマンドで
新たなものを生成してくれるようです。
ただしcredentialsの中身は全て吹き飛びますのでご注意を。

$ sudo EDITOR=vim rails credentials:edit

Rails6以降とcredentilas.yml.enc

6以降は環境ごとに秘匿情報を分けられるようになりました。(祝)

本番環境で情報を追加したい時以下コマンドを実行します。
環境に応じてenvironment以降を変化させます。

$ rails credentials:edit --environment production

このコマンドはconfig/credentials/production.yml.encと、config/credentials/production.keyを作成します。ファイル名とキーの名前にそれぞれ該当する環境が記載されます。
サーバーにはproduction.keyのみを上げれば良い。

この場合でもmaster.keyやsecret_key_baseの扱いには注意。

参考

Rails 5.2 で ActiveSupport::MessageEncryptor::InvalidMessage

Rails5.2から追加された credentials.yml.enc のキホン

Rails5.2の新機能credentials等でパスワード等を管理する

【Ruby/Rails】デプロイ作業をCapistranoで自動化する

Add support for multi environment credentials.

Rails6から入ったmulti environment credentialsを使う

2
2
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
2
2