我应该在Heroku上将敏感文件存储在哪里?

时间:2012-07-07 22:23:48

标签: configuration heroku certificate environment-variables

我可能没有想到这个问题的明显答案。我知道安全凭据等敏感数据最好通过Heroku的CLI heroku config:add使用环境变量存储在像Heroku这样的服务上。但是敏感的文件呢,比如证书呢?具体来说,我想知道我应该对Apple Push Notifications(APN)的证书做些什么。

我自己正在实施这项工作,因为the silence in response to this question让我相信那里没有很多很好的选择(Urban Airship看起来太贵了)。从APN on Rails开始,我看到他们实际上将证书存储在数据库中。那有意义吗?或者将证书的内容实际存储在环境变量中是否有意义(不确定是否可能)?

4 个答案:

答案 0 :(得分:6)

您可以在环境变量中设置整个证书。

看到这个答案: Multi-line config variables in Heroku

答案 1 :(得分:3)

您可以考虑在S3中存储证书,该证书可以在启动时由每个进程下载并存储在内存中(或memcached / redis)以供后续访问。

如果您真的感觉到它,您可以考虑创建自己的buildpack,它在slug编译时执行证书下载并使其在slug文件系统上可用。

答案 2 :(得分:0)

我建议创建一个包含证书的单独存储库,只有您的内部开发人员才能访问。

在本地执行此操作:

  

git clone myproject myprojectwithcerts

     

cd myprojectwithcerts

     

git add heroku username@herokuapp.com/myproject

然后你可以将你的证书添加到“myprojectwithcerts”,提交它们,然后推送到Heroku。

  

git push heroku master

myproject中发生更改时

  

git pull origin master

只要您的内部开发人员可以访问Heroku进行推/拉,只有他们可以访问您的敏感文件。

答案 3 :(得分:0)

对我来说,最好的解决方案是加密证书中的私钥,并在Herokus环境变量中存储解密密码。