位置:首页 > Ruby > Rails密钥管理最佳实践与安全配置指南

Rails密钥管理最佳实践与安全配置指南

时间:2026-08-20  |  作者:极客少年  |  阅读:0

rails支持多环境密钥管理,也就是生产环境和开发环境的密钥可以分开,提高安全性。

密钥有什么用呢?

比如JWT加密解密,sessionID加密解密,这些都需要key(对称加密)。

开发环境

开发环境中,master.keycredentials.yml.enc 是两个文件。

master.key + keys => encrypted(encrypted是加密后的文本)

encrypted + master.key => keys

对应的文件是:master.keycredentials.yml.enc

编辑密钥

我们可以输入命令行:

bin/rails credentials:edit
上面这个命令默认是用vim编辑器打开,如果想用vscode打开,可以执行下面这个命令
EDITOR="code --wait" bin/rails credentials:edit
指定用什么编辑器打开,可以编辑EDITOR="*******"
例如指定vim编辑器打开
EDITOR="vim" bin/rails credentials:edit

系统会创建一个临时文件(如下图)编写key,关闭之后会自动删除这个临时文件。

图中的secret_key_base字段不是固定的。

image.png

随后,系统会自动依据这个key和master.key生成credentials.yml.enc。

若不是新建,则会自动更新现有的.enc文件。

读取密钥

怎么查看临时文件里面的信息呢?rails自带的命令行可以查看。

bin/rails console  或者  bin/rails c

然后输入:

查看指定的key
Rails.application.credentials.secret_key_base

image.png

查看所有
Rails.application.credentials.config

image.png

生产环境

跟开发环境差不多,两个操作:写key读key

写key比开发环境多了--environment production

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

会得到两个文件:

  • config/credentials/production.key(已添加到.gitignore中)
  • config/credentials/production.yml.enc

读key比开发环境多了RAILS_ENV=production

RAILS_ENV=production rails c

查看指定的key
Rails.application.credentials.secret_key_base
查看所有
Rails.application.credentials.config

可以删掉 production.key(但要备份)。

总结

开发环境

  • 使用 master.key 和 credentials.yml.enc
  • master.key 被 git ignore
  • 如果 .enc 不被 git ignore,那就多人共用 master.key
  • 如果 .enc 要被 git ignore,那就每个人创建自己的 master.key

生产环境

  • 使用 production.key 和 production.yml.enc
  • production.key 被 git ignore,内容写到环境变量
  • .env 不被 git ignore
  • 读取 key 们的代码跟开发环境一模一样

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多