記事の目的
タイトルの通り、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を削除する」解決策とやってることは一緒かと思いますので、「既存ファイルの削除→新たにファイル作成」でもよいかと思います!