我是rails的新手,我正在将代码发送到Amazon Web Services。我想知道,隐藏或加密密钥的最佳方法是什么(例如,对于Mandrill),因此您的应用程序的所有功能都可以在线工作,但您不会暴露任何私钥?
到目前为止,在开发过程中,我将我的密钥保存在我的bash配置文件中并在本地工作正常。
非常感谢您的建议!
答案 0 :(得分:1)
所以,我想到了使用费加罗的宝石,但我最终使用了sstephenson的rbenv-vars: https://github.com/sstephenson/rbenv-vars
On the Amazon Server, I made a directory:
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/rbenv-vars.git
$ rbenv rehash
Then, on the AWS server, I used vim to create a file:
$ vim .rbenv-vars
$ rake secret in your project directory to get a SECRET_KEY_BASE=place key here
然后我将.rbenv-vars添加到.gitignore。 当然,您不希望将这些密钥发送给Github。
在此文件中,您还可以将密钥放在他们驻留在服务器上的位置以执行其工作。
答案 1 :(得分:0)
看看使用环境变量!这个网站真的帮助我http://railsapps.github.io/rails-environment-variables.html
答案 2 :(得分:0)
通常的做法是设置environment variables
。如果你曾经使用过Heroku,你可以在设置面板中看到有一些。
在config/secrets.yml
中,对于生产环境,设置密钥的默认方法是env var,因为那里有一些erb <%= ... %>
代码。你可以在那里更改关键字。
要在每次重新启动终端时设置值,可以将rake secret RAILS_ENV=production
命令的值保存在名为.bash_aliases
的文件中(仅存在于linux中)或其他一些脚本中在shell启动时调用。
在该文件中,输入:export KEYWORD='whatever the value is'
并瞧!
现在,如果你printenv KEYWORD
查看存储在名为KEYWORD
的env var中的值,它就会在那里。