ssl 如何让Grails应用程序在端口443上成功运行

3npbholx  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一个Grails 4.0.10应用程序,我试图在端口443上运行,因为当使用443以外的其他端口时,端口号会像这样显示在URL栏中。

https://2.113.139.14:8443/

我可以让它在任何其他端口上运行,如8443或8445。
我刚把端口改成了8445。
我在application.yml中进行了更改:

server:
    port: 8445                                             # The port to listen on
    ssl:
        enabled: true                                      # Activate HTTPS mode on the server port
        key-store: /home/runner/selfsigned.jks         # e.g. /etc/tomcat7/keystore/tomcat.keystore
        key-store-password: pepsicola      # e.g. changeit
        key-alias: tomcat                        # e.g. tomcat
        key-password: pepsicola

在应用程序中。groovy

grails.plugin.springsecurity.portMapper.httpPort=8080
grails.plugin.springsecurity.portMapper.httpsPort=8445

 production {
        grails.logging.jul.usebridge = false
        net.authorize.environment = net.authorize.Environment.PRODUCTION
        net.authorize.formAction = net.authorize.Environment.PRODUCTION.baseUrl.toString() + '/gateway/transact.dll'

        grails.insecureServerURL = "http://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpPort}${grails.app.context}"
        grails.serverURL = "https://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpsPort}${grails.app.context}"

在Gradle版本中

bootRun {
    ignoreExitValue true
    jvmArgs(
        '-Dspring.output.ansi.enabled=always',
            '-Duser.timezone=US/Mountain',
            '-Dgrails.server.port.https=8445',
            '-Dgrails.server.port.http=8080',
//            '-Dorg.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true',

            '-noverify',
        '-XX:TieredStopAtLevel=1',
        '-Xmx1024m')
    sourceResources sourceSets.main
    String springProfilesActive = 'spring.profiles.active'
    systemProperty springProfilesActive, System.getProperty(springProfilesActive)
}

但是当我对443进行这样的更改时,它不起作用。
在application.yml中

server:
    servlet:
        context-path: '/roadrace'

    port: 443                                             # The port to listen on
    ssl:
        enabled: true                                      # Activate HTTPS mode on the server port
        key-store: /home/runnercard/selfsigned.jks         # e.g. /etc/tomcat7/keystore/tomcat.keystore
        key-store-password: pepsicola      # e.g. changeit
        key-alias: tomcat                        # e.g. tomcat
        key-password: pepsicola

在应用程序中。groovy

grails.plugin.springsecurity.portMapper.httpPort=8080
grails.plugin.springsecurity.portMapper.httpsPort=443

 production {
        grails.logging.jul.usebridge = false
        net.authorize.environment = net.authorize.Environment.PRODUCTION
        net.authorize.formAction = net.authorize.Environment.PRODUCTION.baseUrl.toString() + '/gateway/transact.dll'

        grails.insecureServerURL = "http://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpPort}${grails.app.context}"
        grails.serverURL = "https://2.113.139.14:${grails.plugin.springsecurity.portMapper.httpsPort}${grails.app.context}"

在Gradle版本中

bootRun {
    ignoreExitValue true
    jvmArgs(
        '-Dspring.output.ansi.enabled=always',
            '-Duser.timezone=US/Mountain',
            '-Dgrails.server.port.https=443',
            '-Dgrails.server.port.http=8080',
//            '-Dorg.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true',

            '-noverify',
        '-XX:TieredStopAtLevel=1',
        '-Xmx1024m')
    sourceResources sourceSets.main
    String springProfilesActive = 'spring.profiles.active'
    systemProperty springProfilesActive, System.getProperty(springProfilesActive)
}

在服务器中,我使用以下命令将应用程序作为独立Java运行

java -Xmx6g -Dgrails.env=prod -Duser.timezone=US/Mountain -jar /home/runnercard/RCRoadRaceWeb4.jar

接下来我可以尝试什么?

ilmyapht

ilmyapht1#

你以前曾经发表过关于在Ubuntu上运行的文章,所以我猜现在仍然是这样。我不确定Windows上的端口规则。
端口1024及以下在大多数系统上都有特权,需要root访问才能侦听。有几个选项,其中 * 最糟糕 * 的是“以root身份运行应用程序”。这是一个糟糕的计划,可能会导致严重的安全错误配置。
相反,你可能想看看端口转发。假设你(或具有系统访问权限的人)拥有root权限,你可以轻松地将所有流量从一个端口(443)转发到另一个端口(8443)。
一旦设置好了,你需要将grails.serverURL属性设置为https://whatever/application(不带端口),这样就可以正确地生成完全限定的链接。

相关问题