Heroku配置密钥基本错误
刚刚使用Git将我的第一个应用程序推送到Heroku,并立即得到了一个Interanl服务器错误。
您必须在应用程序的配置中设置config.secret_key_base。
这是因为在我的.gitignore文件中包含以下文件:
配置/初始化/ secret_token.rb
我在我的.gitignore文件中使用了一个标准模板: https : //github.com/github/gitignore/blob/master/Rails.gitignore
我的问题 :我是否应该通过Heroku直接设置此密钥以增加安全性,如果是这样的话?
要么
我应该从我的.gitignore文件中删除这一行吗?
除了在Heroku上将秘密令牌设置为ENV变量之外,如Nick Ginanto所述,您还需要以下内容才能完成这项工作。
从.gitignore
删除config/initializers/secret_token.rb
将此文件中的行更改为:
MyApp::Application.config.secret_token = ENV['SECRET_TOKEN']
然后,这将获取您使用Heroku的配置变量设置的秘密令牌。
为了在本地环境中拾取令牌,您需要添加它。 这里有很多选项,但最接近Heroku的选项是在项目根目录中使用foreman gem和.env
文件。 .env
需要有secret_token
SECRET_TOKEN=NKUd7gisd7fueAISDfg....
您可以使用rake secret
命令生成令牌。 确保将.env
文件添加到.gitignore
。
有了这一切,您将拥有Heroku和本地的不同令牌,您的令牌将不在您的源代码管理中。
将其设置为Heroku环境变量,并为开发提供后备
删除硬编码的秘密,将秘密初始化程序检查到版本控制中,在Heroku上设置环境变量,并为开发和阶段提供后备。
1.删除硬编码的秘密,并可选择提供后备:
编辑config / initializers / secure_random.rb以删除生产的硬编码密钥。 如果您不想更改启动服务器的方式,可以选择包括非生产环境的后备。
secret = Rails.env.production? ? ENV['SECRET_TOKEN'] : "top_secret_token" YourApp::Application.config.secret_key_base = secret
2.将config / initializers / secure_random.rb检查为git
编辑.gitignore并删除该行:
config/initializers/secret_token.rb
现在提交文件。
3.设置Heroku的密钥
跑:
rake secret
生成随机字母数字字符串。 我想通过手动混合密钥来加倍确定,以防万一在密钥生成算法中发现未来的弱点,就像不久前发生的Debian一样。 可能这是不必要的。
下次运行:
heroku config:set SECRET_TOKEN=paste_random_string_here
将秘密设置为Heroku环境变量。 部署到Heroku,你就完成了。
最好使用ENV变量。
这样,您可以根据需要快速使所有cookie无效,每个环境都有一个单独的秘密,无需以特殊方式处理该文件
heroku config:set SECRET_TOKEN=ertbs45tnsb3aw5bsxdrt54...
如果您复制了应用程序或在heroku中设置了另一个应用程序,则每个应用程序都将拥有自己的secret_token。 在本地机器上只需设置相同的变量
- GET请求(无JSON)无法使用Rails 4.1上的Devise 3.2.4validationCSRF令牌的真实性
- 没有运算符匹配给定的名称和参数类型
- 在Heroku上托管的ROR中,在2个站点上显示一个具有不同前端但相同后端的应用程序
- ExecJS :: RuntimeError:SyntaxError:意外的标记:operator(>)(行:22342,col:24,pos:826182)
- Heroku – 如何将数据从数据库提取到本地数据库?
- 如何让Redis从Heroku开始?
- Heroku和Rails:如何将utf-8设置为默认编码
- “heroku运行rake资产:干净”不会清理任何东西
- phusion乘客是否使用分叉,如果是,在哪里设置after_fork配置?