Play框架[2.0] HTTPS

6

我正在使用Play Framework 2.0开发Web服务器,登录是由我们同样正在制作的Android设备软件执行的。我们最担心的问题是,在Play 2.0中找不到任何支持HTTPS的方法。由于这是一个学校项目,我们负担不起云服务或其他代理来解决HTTPS问题。

我们的主要问题是密码和电子邮件在请求主体中以纯文本形式传输,对移动设备和服务器进行加密和解密看起来会影响性能并且HTTPS能够处理此问题,因此我们想要避免使用它。是否有任何方法可以使用HTTPS来保护用户的登录数据,或者有任何其他建议。

如果没有,我们可能不得不将所有应用程序迁移到另一个框架,因为没有加密的重要机密数据通过互联网传输看起来不好。

2个回答

4

从历史上看,大多数人都会在反向代理后运行Java/Scala应用程序服务器。在apache中设置HTTPS并不太难,然后只需使用ModProxy将请求发送到您的Play应用程序内部。

任何一个反向代理系统都可能可以做到这一点,nginx也很流行,并且通常比apache配置更容易,但我从未使用过带有HTTPS的nginx。

通常的第一原因是安全。您无法在端口80上以非特权用户身份启动Java程序。如果您以root身份在端口80上运行Java程序,则应用程序中的任何漏洞都具有root权限!因此,将Java应用程序启动在另一个端口上,然后从可以以非特权用户身份在端口80上运行的Web服务器进行反向代理。

(*)这是一个稍微简化的说法,但我认为这种怪异的讨论超出了范围。


您可以使用authbind和/或jsvc在端口80上启动非特权用户,它将以root身份启动,绑定端口,然后在初始化Java程序之前降级您的用户。 - Cristian Vrabie
你可以使用iptables将80端口的流量转发到监听在高端口上的非root应用程序上 — 例如,可以搜索“iptables将80端口转发到8080”。 - KajMagnus

2

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

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

JAVA_OPTS=-Dhttps.port=9001 play start

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接