2012-03-29 177 views
6

我想在一個使用play framework 2.0的web服務器上工作,其中登錄是由我們也在製作的android設備軟件執行的。主要擔心的是,我們無法在Play 2.0中找到對HTTPS的支持。感覺這是一個學校項目,我們不能avery雲或其他代理來解決我們的HTTPS。play-framework [2.0] HTTPS

我們的主要問題是密碼和電子郵件在請求的主體中顯而易見,在移動設備和服務器上的加密和解密在性能和感覺上看起來代價昂貴HTTPS負責這個我們想要避免它。有什麼方法可以使用HTTPS來保護用戶登錄數據或任何其他建議。

如果不是,我們可能不得不遷移所有應用程序到另一個框架,因爲它不會看到好的重要機密數據通過互聯網沒有加密。

回答

4

從歷史上看,大多數人都會在某種逆向代理背後運行Java/Scala應用服務器。在apache中設置HTTPS並不難,然後使用ModProxy將請求內部發送到您的Play應用程序。

任何一個反向代理系統都可能做到這一點,nginx也很流行,一般比apache配置簡單,但我從來沒有用過HTTPS。

通常這樣做的首要原因是安全性。您無法以端口80上的非特權用戶身份啓動Java程序。如果您以端口80上運行的root身份啓動Java程序,則應用程序中的任何漏洞都擁有root權限!因此,在另一個端口上啓動Java應用程序,然後從可在端口80上作爲非專用用戶運行的Web服務器反向代理。

(*)這是一個稍微過分簡化但討論這個怪事超出了我的想象範圍。

+0

您可以在端口80啓動非特權用戶** ** authbind和/或** **的jsvc這將以root用戶身份啓動,綁定端口,然後在初始化您的Java程序之前降級您的用戶。 – 2013-11-29 23:31:34

+0

例如,您可以使用iptables將端口80上的流量轉發到監聽較高端口的非根應用程序 - google爲「iptables forward port 80 to 8080」。 – KajMagnus 2015-05-30 13:19:04

2

現在可以直接使用Play和https了。這是在遊戲中加入2.1

只需啓動與服務器:

JAVA_OPTS=-Dhttps.port=9001 play start