gpt4 book ai didi

ruby-on-rails - 用于生产环境的 Rails 5.2 加密凭据

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:19 25 4
gpt4 key购买 nike

我已经创建了 5.2 版本的新 Rails 应用程序。 Rails 5.2 引入了 secret 加密功能。

我已经在 devise.rb 文件中配置了 key

config.secret_key = Rails.application.credentials[Rails.env.to_sym][:secret_key_base]

并且还为所有使用

的环境添加了 secret_key

EDITOR=vim rails credentials:edit

development:
secret_key_base: absdss

test:
secret_key_base: 123232

production:
secret_key_base: 123456

保存凭据后,我可以在本地的 Rails 控制台中获取 secret_key

rails 控制台输出:

Running via Spring preloader in process 44308
Loading development environment (Rails 5.2.0)
2.5.1 :001 > Rails.application.credentials.development[:secret_key_base]
=> "absdss"

凭据在生产服务器上不起作用,我们在 gitlab 中使用 CI/CD 进行部署阶段,当我运行

rails db:create db:migrate

我收到以下错误

> rails db:create db:migrate

---> Running in 1563453ddf2a

rails aborted!

NoMethodError: undefined method `[]' for nil:NilClass

/usr/src/app/config/initializers/devise.rb:12:in `block in <main>'

/usr/local/bundle/gems/devise-4.4.3/lib/devise.rb:307:in `setup'

/usr/src/app/config/initializers/devise.rb:5:in `<main>'

/usr/local/bundle/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load'

现在的问题是如何将 RAILS_MASTER_KEY 设置为生产服务器?

最佳答案

我分享几点可能对你有帮助

加密凭据与纯文本凭据或环境变量相比具有一些优势

Rails 5.1 引入了加密的 secret

config/secrets.yml.key
config/secrets.yml.enc

Rails 5.2 用加密凭据替换这两个 secret

config/credentials.yml.enc
config/master.key

config/master.key文件是在创建rails项目时创建的

加密 key (master.key)被git忽略

生产中

配置/环境/production.rb

config.require_master_key = true

没有 key 无法解密您的凭据

管理密​​钥

一个。 scp 或 sftp 文件

如果您需要向开发人员提供 key 的副本,那么您可以使用密码管理器,因为它们使用加密。

我使用最后一次管理主 key 文件

用于加密凭据的 key 与 secret keystore 不同。

master.key 上的 key 用于加密和解密所有凭据。它不会取代 keystore 。

Rails 需要 keystore 。如果要生成新的秘钥库运行,

bin/rails secret

并通过运行 bin/rails credentials:edit 将其添加到您的凭据中。

关于ruby-on-rails - 用于生产环境的 Rails 5.2 加密凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51058178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com