【问题标题】:Run Grails on HTTPS在 HTTPS 上运行 Grails
【发布时间】:2016-09-09 12:58:27
【问题描述】:

我想在 localhost 上的 https 上运行 Grails。我已经配置了 HTTPS,当localhost:443 被点击时可以看到 Apache 页面。目前 Grails 在8080 上运行。当我尝试使用grails -Dserver.port.https=443 run-app -https 运行grails 时,我得到Permission denied。我知道这需要端口1024 下方的某种根访问权限。但是当我尝试sudo grails run-app 时,这给了我找不到命令。

任何可能的解决方案?

【问题讨论】:

  • 您使用的是哪个版本的 Grails?
  • Grails 版本是 2.3.11
  • 根据文档docs.grails.org/2.3.11/guide/…,您应该使用grails.server.port.https - 您在选项开头缺少grails.

标签: grails https openssl ssl-certificate


【解决方案1】:

通常,以 root 身份运行 Web 应用程序是个坏主意。实际上,您的应用程序变得超级可利用。您设置中的任何安全漏洞都会突然让攻击者获得对服务器的完全 root 访问权限。

这就是为什么更常见的是执行以下操作之一:

  • 使用 https 在端口 443 上运行 apache 或 nginx 或 haproxy 等代理,在不使用 https 的端口 8080 上运行 grails。设置代理以将所有请求转发到您的 grails 应用程序 8080。确保 grails 应用程序只侦听 localhost,因此您不能直接访问 yoursite.com:8080。
  • 在 8080 上运行 Grails,使用 https,只监听 localhost,并设置 netfilter/iptables 规则将 443 上的流量转发到 localhost 8080。

这两种设置本质上是相同的。主要区别在于是使用用户级别的设置,还是依赖操作系统级别的服务,例如 netfilters。

【讨论】:

  • 你在很大程度上解决了我的困惑。我会告诉你更具体的。基本上,我有一个从 grails 视图发出的银行交易请求。该请求仅需要 https。所以以上对于传入是正确的。我发帖的时候呢?如何通过 443 重定向传出?
  • 定义“传出”...如果您使用 HttpBuilder 或其他类似的工具连接到外部 URL,请确保该 URL 以“https”开头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
相关资源
最近更新 更多