我可能没有想到这个问题的明显答案。我知道安全凭据等敏感数据最好通过Heroku的CLI heroku config:add
使用环境变量存储在像Heroku这样的服务上。但是敏感的文件呢,比如证书呢?具体来说,我想知道我应该对Apple Push Notifications(APN)的证书做些什么。
我自己正在实施这项工作,因为the silence in response to this question让我相信那里没有很多很好的选择(Urban Airship看起来太贵了)。从APN on Rails开始,我看到他们实际上将证书存储在数据库中。那有意义吗?或者将证书的内容实际存储在环境变量中是否有意义(不确定是否可能)?
答案 0 :(得分:6)
您可以在环境变量中设置整个证书。
答案 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环境变量中存储解密密码。