2014-07-08 42 views
2

我是一名新手,我至少在登錄時使用HTTPS並註冊頁面以便在敏感用戶數據上獲得更多安全性。 我有一個關於這個一系列的問題:Play Framework服務HTTPS內容

  1. 我已經配置我的播放應用使用https上與https.port屬性application.conf文件。然而在我的開發環境中,我似乎無法使用https功能啓動服務器,除非使用以下命令:play -Dhttps.port=<port> 爲什麼會發生這種情況?我會認爲我可以使用dev.conf(現在是application.conf)文件來執行此操作。在使用配置文件中指定的這種設置時,我無法以開發模式啓動服務器?

  2. 儘管我使用https功能啓動服務器,但使用https在線播放的正確方法是什麼?我已經創建了一個我使用的Java密鑰存儲,並嘗試使用redirect(securedIndexCall.absoluteURL(request, secure))將(從控制器)請求重定向到https url。但似乎至少在我的開發環境(本地主機)上工作。日誌指定一個像例外:

    java.lang.IllegalArgumentException: empty text java.lang.IllegalArgumentException: invalid version format: M¥å/=<junk characters continue>

  3. 我應該使用HTTPS對整個應用程序,或者只是確保登錄和註冊要求是足夠了嗎?

我覺得提供的官方文檔相當不足,我在這裏試圖弄清楚我應該怎麼做。

任何幫助將非常感謝!

+0

那些應該可能是3個問題,而不是一個。恐怕這個問題太廣泛了。另外,我建議你使用HTTP的前端服務器,例如[nginx的](http://nginx.org/en/docs/http/configuring_https_servers.html)。 –

回答

4

我同意費爾南多,我認爲設置一個前端Web服務器更容易。在我的情況下,我使用Lighttpd,設置起來非常簡單。我建議:

  1. Lighttpd的配置按照這些指令(在這個階段,不用擔心HTTPS只是得到HTTP工作):http://www.playframework.com/documentation/2.3.x/HTTPServer
  2. 然後在Lighttpd的配置HTTPS:http://redmine.lighttpd.net/projects/1/wiki/HowToSimpleSSL。如果您打算購買SSL證書,那麼將會設置更多選項(例如中間證書)。以下頁面有詳細信息:http://redmine.lighttpd.net/projects/1/wiki/Docs_SSL

回答您的主要問題:

1)播放啓用HTTPS

是的,你必須明確地說,你要使用HTTPS啓動時 http://www.playframework.com/documentation/2.3.x/ConfiguringHttps

2)「java.lang.Ill egalArgumentException「錯誤消息

密鑰庫可能存在問題。這SO文章似乎更詳細地討論:Play framework 2.2.1 HTTPs fails on connection attempt

3)SSL用於登錄頁面或整個應用程序

就個人而言,我會去爲整個應用程序。如果您花時間設置HTTPS,我認爲您可能會覆蓋整個網站。我猜在運行HTTPS時會有輕微的性能開銷,但實際上並不是你會注意到的。

+0

我想直接使用HTTPS的原因是因爲應用程序將部署在雲(Heroku)中,我不知道是否有可能建立一個前端Web服務器。 – hvieira

+0

我從來沒有嘗試過,但我認爲這是Heroku在購買SSL附加功能時會處理的事情(https://addons.heroku.com/ssl)。我認爲你的應用程序不需要知道SSL。它們可能與我描述的用於負載平衡的設置(即將請求引導到應用程序實例的Web服務器)的設置類似。 – Ian

+0

我發現了爲什麼這些異常被拋出。我雖然在開發模式下從application.conf中讀取https配置。然而這不是事實。事實是這些遊戲是由於遊戲無法訪問密鑰存儲而造成的。我必須通過所有必要的參數才能正常工作:'play debug -Dhttps.port = -Dhttps.keyStore = -Dhttps.keyStorePassword = ' – hvieira