Grails 3默认强制https

时间:2016-04-21 12:17:07

标签: grails run-app

我在作品中有Grails 3应用程序。我想强制run-app默认使用https。有一些帖子可以追溯到大约一年前,Most recent post,显示了默认情况下强制https的可能方法。即使用别名或使用run-app -https命令。

我将此问题重新提交到表中,以查看是否有人设法在默认情况下运行https而不使用先前帖子中的显式方法。当然,对于那些总是希望在默认情况下启用https的情况下运行应用程序的用户,无论是通过cli还是IDE,这都是所需的功能。我们可以在run-app命令之前将它作为参数传递给我们,这样我们就不必在不同的使用环境中明确说明它吗?

例如:

我已经尝试编辑构建文件以传递jvm参数,但没有运气。

bootRun {
    jvmArgs = "-D-https"
}

1 个答案:

答案 0 :(得分:1)

为了完成这项工作,我转向了不同的方法。可以按照以下帖子中的说明解决此问题:Embedded Tomcat enable SSL

与-https选项不同,使用这种方法,我们需要创建自己的密钥库文件并将其存储在某处。我们还可以使用grails生成的密钥库,它默认位于构建目录中。但是,我们必须将其位置移动到更永久的位置,因为可以清理构建目录。注意:您可以通过检查bootRun中传递的systemProperties来获取密钥库的密码和数据。

bootRun {
    print systemProperties
}

我的输出如下:

endpoints.shutdown.enabled:true, env:development, full.stacktrace:false, grails.env:development, grails.full.stacktrace:false, info.app.grailsVersion:3.1.2, info.app.name:coolio, info.app.version:0.1, interactive.mode.enabled:true, run.active:true, server.port:8443, server.ssl.key-password:123456, server.ssl.key-store:./build/ssl/keystore, server.ssl.key-store-password:123456, verbose:false

我的配置没有作者所显示的确切属性,而是仅包含所需部分的组合:

private static Connector getSslConnector() {
    def dir = System.getProperty("user.dir")
    Connector connector = new Connector();
    connector.setPort(8443);
    connector.setSecure(true);
    connector.setScheme("https");
    connector.setAttribute("keystorePass", "coolio");
    connector.setAttribute("keystoreFile", dir + "/.keystore");
    connector.setAttribute("clientAuth", "false");
    connector.setAttribute("protocol", "HTTP/1.1");
    connector.setAttribute("sslProtocol", "TLS");
    connector.setAttribute("maxThreads", "200");
    connector.setAttribute("protocol", "org.apache.coyote.http11.Http11NioProtocol");
    connector.setAttribute("SSLEnabled", true);
    return connector;
}

注意,原始帖子将协议属性设置为:

connector.setAttribute("protocol", "org.apache.coyote.http11.Http11AprProtocol");

我将属性设置为:

connector.setAttribute("protocol", "org.apache.coyote.http11.Http11NioProtocol");

除此之外,将连接器连接到tomcat服务,如上一篇文章中所示,并且所有连接器都应按预期工作。您现在可以执行run-app,同时存在http和https。