2014-07-08 41 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