对称加密
masterKey + keys => credentials.enc
credentials.enc + masterKey => keys
- 开发者在临时文件里写好了keys
- 用masterKey把keys加密,得到加密文件
credentials.enc - 删除临时文件,keys再也不会被看见了
- 把credentials.enc存到git里面,把masterKey排除git
如何读keys
打开控制台
bin/rails console
bin/rails c
输入代码
Rails.application.credentials.secret_key_base
Rails.application.credentials.github[:key]
如何写keys
命令
EDITOR="code --wait" bin/rails credentials:edit
或者
EDITOR="vim" bin/rails credentials:edit
细节
关闭编辑器后
- keys 所在文件会自动销毁
- .enc文件会自动更新
安全问题
支持多环境密钥
命令
EDITOR="code --wait" bin/rails credentials:edit --environment production
得到两个文件
config/credentials/production.key (被加入.gitignore)
config/credentials/production.yml.enc
打开控制台试下
RAILS_ENV=production rails c
Rails.application.credentials.secret_key_base
把production.key复制到生产环境,可以删掉它,但要备份。