LoginSignup
33
27

More than 3 years have passed since last update.

EDITOR=vi rails credentials:editするもCouldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?と言われる

Last updated at Posted at 2020-11-10

記事の目的

タイトルの通り、EDITOR=vi rails credentials:editのコマンドを実行するも
credentials.yml.encが開けない状況に...😭

しかしググりながら開けたので、その過程を共有し誰かのお役に立ればと思い記事にしました。

初学者なので間違いがある可能性があります。その際は、ご指摘下さい。

エラーから現状把握(結論:master.keyが既存のcredentials.yml.ercに対して使えないのが原因)

credentials.yml.encに情報を入れたく、viコマンドを打つと、以下のエラー内容が出た。

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

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?

内容はこんな感じかと思います。
・暗号化キーを保存するのに、config/master.keyを追加しといたぞ〜
・復号できません。もしや...キー間違えてない?

暗号?復号?キー?credentials.yml.erc?は?という方は、以下の記事を読むといいかもしれません。
https://qiita.com/NaokiIshimura/items/2a179f2ab910992c4d39
https://hirocorpblog.com/rails-credentials-master/

また、復号された内容を閲覧する為のコマンドを打つと別のエラーが出る。(このエラーが糸口になりました)

$ rails credentials:show(エラーログは長いので抜粋)

OpenSSL::Cipher::CipherError

ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)

OpenSSL::Cipher::CipherErrorのエラーは拾ってないです、すみません。
ActiveSupport::MessageEncryptor::InvalidMessageについては、以下の記事で触れられており、
「上のコマンドで新しく生成された鍵が既存のcredentials.yml.ercに対して使えない」為、エラーが出ているようでした。以下の記事のおかげで現状が把握できました🙇‍♂️

https://qiita.com/scivola/items/cc06ddbfd94d3118f693
https://qiita.com/kenz-dev/items/67ac14d1c89f7c5641c1

解決策(credentials.yml.encを作り直す)

config/credentials.yml.encのファイル名を
config/credentials_backup.yml.enc等にファイル名を適当に変更します。
(以下のコマンドで新しいcredentilals.ymlを作成する為に、名前の重複を防ぐ為に名前を変更します)

そして、EDITOR=vi rails credentials:editを再度実行....開けました!!

$ EDITOR=vi rails credentials:edit
File encrypted and saved.
(↓viコマンドにより表示された中身)
# aws:
#   access_key_id: 123
#   secret_access_key: 345
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 
~                                                                                                                                                            
~                                                                                                                

また、「ファイルは暗号化され、保存されたぞ〜」と言ってくれましたね。
※先ほど、名前変更したcredentials_backup.yml.ercはもう不要なので削除して下さい。

なぜcredentials.yml.encは開けた?

これは、$ EDITOR=vi rails credentials:editによって、
credentials.yml.encが新しく作成され、上で作った鍵と紐づくからです。
(編集のコマンドなのに、鍵がなければ鍵を、credentials.yml.ercがなければcredentials.yml.ercを作成するようですね。)

まとめると、既存のcredentials.yml.ercをcredentials_backup.yml.ercに変更した為、credentials.yml.ercがない扱いになり、その状態で上のコマンドを実行すると、新しいcredentials.yml.ercが作成され、鍵と紐づいたということになります。

紐づいた後は、変更したcredentials_backup.yml.ercは不要なので削除して下さい。
このように「ファイルの名前変更→新たにファイル作成→名前変更したものの削除」の流れで作業しましたが、以下の記事で紹介している「既存のcredentials.yml.ercを削除する」解決策とやってることは一緒かと思いますので、「既存ファイルの削除→新たにファイル作成」でもよいかと思います!

33
27
2

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
33
27