播放框架[2.0]HTTPS

播放框架[2.0]HTTPS,https,playframework-2.0,Https,Playframework 2.0,我正在使用PlayFramework2.0在一个web服务器上工作,登录由我们正在制作的android设备软件执行。我们主要担心的是在Play2.0中找不到对HTTPS的任何支持。意识到这是一个学校项目,我们不能用云或其他代理为我们解决HTTPS 我们的主要问题是密码和电子邮件在请求主体中显而易见,在移动设备和服务器上进行加密和解密在性能上看起来代价高昂,从某种意义上说HTTPS解决了这一问题,我们希望避免它。我们有没有办法使用HTTPS来保护用户的登录数据或其他建议 如果不是这样,我们可能不得

我正在使用PlayFramework2.0在一个web服务器上工作,登录由我们正在制作的android设备软件执行。我们主要担心的是在Play2.0中找不到对HTTPS的任何支持。意识到这是一个学校项目,我们不能用云或其他代理为我们解决HTTPS

我们的主要问题是密码和电子邮件在请求主体中显而易见,在移动设备和服务器上进行加密和解密在性能上看起来代价高昂,从某种意义上说HTTPS解决了这一问题,我们希望避免它。我们有没有办法使用HTTPS来保护用户的登录数据或其他建议


如果不是这样,我们可能不得不将所有应用程序迁移到另一个框架中,因为在没有加密的情况下,重要的机密数据在互联网上传输是不好看的。

历史上,我见过大多数人在某种反向代理之后运行Java/Scala应用程序服务器。在apache中设置HTTPS并不难,然后只需使用ModProxy在内部向Play应用程序发送请求

任何一种反向代理系统都有可能做到这一点,nginx也很流行,并且通常比apache更易于配置,但我从未将其与HTTPS一起使用过

通常这样做的首要原因是安全性。您不能在端口80上以非特权用户身份启动Java程序。如果您以根用户身份启动Java程序,并在端口80上运行,则应用程序中的任何漏洞都具有根用户权限!因此,在另一个端口上启动Java应用程序,然后从一个web服务器上反向代理,该服务器可以作为非特权用户在端口80上运行


(*)这有点过于简化,但我认为对这种奇怪的讨论超出了本文的范围。

现在可以直接使用Play和https。这是在游戏2.1中添加的

只需使用以下命令启动服务器:

JAVA_OPTS=-Dhttps.port=9001 play start

您可以使用authbind和/或jsvc在端口80上启动一个非特权用户,该用户将以root用户身份启动,绑定该端口,然后在初始化java程序之前降级用户。您可以使用iptables将流量从端口80转发到非root应用程序,监听更高的端口,例如google的“iptables forward port 80 to 8080”。