2011-12-31 37 views
12

每個新的Play應用程序都會在其配置文件中生成一個新的應用程序密鑰。如何讓應用程序祕密保密?

application.secret=asdfadsfdasf

我正在開發將在Heroku上部署的開源應用程序。我該如何保密這個應用程序的祕密(例如,不把它提交到源代碼控制中)?

究竟應用的祕密在哪裏?也許對於我有限的目的,我並不需要保守祕密?

回答

24

可以外部化的祕密作爲一個環境變量。

conf/application.conf只需更換

application.secret=abc123... 

application.secret=${APP_SECRET} 

,然後將該配置無功在Heroku上有:

$ heroku config:add APP_SECRET=abc123... 

現在你可以在每個應用管理的祕密並避免將它們檢入版本控制。

+0

這聽起來很對 - 謝謝! – ripper234 2011-12-31 06:59:53

+0

如果你不打算使用heroku進行部署?有沒有選擇使用像jasypt的東西 – 2013-06-13 08:29:03

0

看起來這個祕密很重要,但你可以爲生產和開發生成新的。因此對於開發,您可以將其檢入到SVN中,然後爲生產生成一個不同的版本。

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

+0

但我的SVN中的application.conf(以及git)將被部署到生產環境中。改寫,我想保持我的application.conf在源代碼控制下。我的產品部署將僅僅是Heroku的'git push'。那麼,我應該運行一個後期部署腳本來更改應用程序密鑰嗎?但是......這個腳本是否存儲在源代碼控制之下?部署到Heroku時有什麼實際的解決方案? – ripper234 2011-12-31 05:33:17

+0

我想我主張不要簡單地使用git push,但是你需要一個在推送到產品之前生成一個新密鑰的腳本,所以不會將它檢入到源代碼控制中。我不確定的問題是,如果您在每次推送意願時重新生成密鑰,都會產生問題?如果不是,將祕密存放在生產中可能並不重要。 – chubbsondubs 2011-12-31 05:46:34

+0

我不認爲更改應用程序密鑰是一個好主意。如果你登錄了一些東西(例如哈希用戶密碼),你需要能夠重複這個確切的簽名,我相信這(確實)應該使用應用程序祕密。 – ripper234 2011-12-31 05:49:20

相關問題