我用5.2版创建了新的Rails应用程序。 Rails 5.2引入了机密的加密功能。
我已在devise.rb文件中配置了密钥
config.secret_key = Rails.application.credentials [Rails.env.to_sym] [:secret_key_base]
,还使用
在所有环境中添加了secret_key。EDITOR = vim rails凭证:编辑
const init = (params) => (<div> <HtmlComponent/> </div>);
const HtmlComponent = (props) = > {
return(
<div>
//do whatever you want to do
</div>
);
}
保存凭据后,我可以在本地的rails控制台中获取secret_key
在Rails控制台中输出:
development:
secret_key_base: absdss
test:
secret_key_base: 123232
production:
secret_key_base: 123456
凭据在生产服务器上不起作用,当我运行
时,我们在gitlab中使用CI / CD进行部署rails db:create db:migrate
我遇到以下错误
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"
现在的问题是如何将RAILS_MASTER_KEY设置为生产服务器?
答案 0 :(得分:2)
您可以在Gitlab CI / CD设置中将主密钥作为MASTER_KEY
秘密变量,然后放置
echo "$MASTER_KEY" > config/master.key
在before_script
文件的.gitlab-ci.yml
部分中。
答案 1 :(得分:1)
我分享的一些观点可能会对您有所帮助
与纯文本凭据或环境变量相比,加密凭据具有一些优势
发布了5.1引入的加密机密
config / secrets.yml.key
config / secrets.yml.enc
Rails 5.2使用加密的凭据替换两个机密
在创建Rails项目时创建config / credentials.yml.enc
config / master.key
config / master.key文件
加密密钥(master.key)被忽略git
生产中
config / environments / production.rb
config.require_master_key = true
没有密钥就无法解密您的凭据
管理密钥
a。 scp或sftp文件
b。如果您需要向开发人员提供密钥的副本,则可以使用密码管理器,因为他们使用加密。
c。我使用最后一遍来管理主密钥文件
用于加密凭据的密钥与秘密密钥库不同。
master.key上的密钥用于加密和解密所有凭据。它不会替代密钥库。
Rails需要密钥库。如果您要生成新的密钥库运行,
bin/rails secret
,然后通过运行bin / rails certificate:edit将其添加到您的凭据中。
答案 2 :(得分:0)
Rails.application.credentials.development&.dig(:secret_key_base)
试试这个。