无法解密 config/credentials.yml.enc。也许您传递了错误的密钥?

Posted

技术标签:

【中文标题】无法解密 config/credentials.yml.enc。也许您传递了错误的密钥?【英文标题】:Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key? 【发布时间】:2020-11-30 12:31:44 【问题描述】:

我最近删除了我的本地项目,但做了一个 git clone 并从我上次提交的地方拿起。当我尝试将图像上传到已配置的 AWS 时,出现此错误:

Aws::Sigv4::Errors::MissingCredentialsError in RentalsController#create


Cannot load `Rails.config.active_storage.service`: missing credentials, provide credentials with one of the following options: - :access_key_id and :secret_access_key - :credentials - :credentials_provider

我试图查看我的 credentials.yml 文件是否有任何错误,但是当我输入此命令时:

EDITOR="code --wait" rails credentials:edit

...我收到此错误:

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

可能是什么问题?

【问题讨论】:

【参考方案1】:

你错过了master.key

当您创建新项目时,rails 将设置 credentials.yml.enc 和匹配的 master.key 文件以访问凭据。 master.key 文件也会自动添加到 gitignore 中,因此如果您在本地删除项目并再次克隆它,您的 master.key 将丢失。

解决此问题的唯一方法是设置新的 credentials.yml.enc 并再次将您的 AWS 凭证添加到其中。

首先您需要删除现有的credentials.yml.enc,然后运行: rails credentials:edit 创建一个新的。

【讨论】:

感谢您发布此答案,它帮助我解决了与 OP 相同的问题。但是我还有一个问题,这意味着我有一个更改的credentials.yml.enc 文件,可以暂存以进行提交。我的直觉是我不应该提交这个,因为它是使用与我的生产应用程序不同的主密钥创建的。对于这个更改的文件,什么是好的解决方案?它应该被忽略吗? 你应该提交这个并为你的生产应用设置新的master.key。您无法使用旧文件,因为您丢失了master.key。如果您没有丢失master.key,那么您根本不应该创建一个新的credentials.yaml.enc,只需放回您的master.key 对于我们这些不经常进行首次部署的人来说,这很容易忘记。而且由于这个错误的来源很容易理解,Rails 本身肯定可以提供更有用的错误消息,根据上下文给出确切的根本原因。

以上是关于无法解密 config/credentials.yml.enc。也许您传递了错误的密钥?的主要内容,如果未能解决你的问题,请参考以下文章

无法解密数据

无法使用 OpenPGP.js 解密未装甲的 pgp 文件:会话密钥解密失败

无法加密和解密 plist 中的数据

为啥Wireshark无法解密HTTPS数据

Codeigniter 4:无法解密加密的帖子数据

无法解密 EncryptedData (SAML2)