【问题标题】:How to keep the app secret a secret?如何对应用程序保密?
【发布时间】:2012-01-30 23:10:17
【问题描述】:

每个新的 Play 应用都会在其配置文件中生成一个新的应用机密。

application.secret=asdfadsfdasf

我正在开发一个将部署在 Heroku 上的开源应用程序。如何将应用程序保密(例如,不将其提交到源代码管理)?

应用机密到底用在了哪里?也许出于我有限的目的,我真的不必保守秘密?

【问题讨论】:

    标签: java heroku playframework


    【解决方案1】:

    您可以将密钥外部化为环境变量。

    conf/application.conf 中直接替换

    application.secret=abc123...
    

    application.secret=${APP_SECRET}
    

    然后在 Heroku 中设置这个配置变量:

    $ heroku config:add APP_SECRET=abc123...
    

    现在您可以基于每个应用管理机密,避免将它们检入版本控制。

    【讨论】:

    • 如果您不打算使用 heroku 进行部署?有没有使用类似 jasypt 的选项
    【解决方案2】:

    看起来这个秘密很重要,但您可以为生产和开发生成新的秘密。因此,对于开发,您可以将其签入 SVN,然后生成一个不同的用于生产。

    http://www.playframework.org/documentation/1.0/production

    【讨论】:

    • 但是我在 SVN(好吧,git)中的 application.conf 将被部署到生产环境中。换种说法,我想将我的 application.conf 置于源代码控制之下。我的生产部署将只是一个git push 到 Heroku。那么,我应该运行一个部署后脚本来更改应用程序密钥吗?但是......这个脚本是否存储在源代码管理下?部署到 Heroku 时有哪些实用的解决方案?
    • 我想我不是在提倡简单地使用 git push,而是你需要一个脚本在推送到生产之前生成一个新的密钥,这样就不会被检查到源代码控制中。我不确定的问题是,如果您每次按下时都重新生成该密钥会产生问题吗?如果不是,那么在生产环境中存储秘密可能就不是那么重要了。
    • 我认为更改应用程序密钥不是一个好主意。如果您在某些东西上签名(例如散列用户密码),您需要能够重复这个确切的签名,我相信这确实(应该)使用应用程序密码。
    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多