让wildfly听端口443而不是8443

maj*_*was 1 https port wildfly-9

所以我添加了一个SSL到我的证书wildfly 9和它的工作,但我想我的配置standalone.xml来听httpsport 443port 8443作为默认的配置,所以当我更新的价值${jboss.https.port:8443} to ${jboss.https.port:443}也产生错误.这就是我对我的看法standalone.xml:

<server name="default-server">
            <http-listener name="default" socket-binding="http" redirect-socket="https"/>
            <https-listener name="httpsServer" socket-binding="https" security-realm="ApplicationRealm"/>
            <host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <location name="/images" handler="ImagesDirHandler"/>
                <filter-ref name="server-header"/>
                <filter-ref name="x-powered-by-header"/>
            </host>
</server>

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>
Run Code Online (Sandbox Code Playgroud)

Dul*_*ren 6

请提供有关您的环境和错误的更准确的详细信息.

我和你有类似的需求.用户通过网络访问我们的系统,其中唯一的请求是在端口80或443上.当客户在端口80上调用系统时,wildfly重定向到端口8443,用户无法连接到系统.解决方案是将wildfly重定向到端口443而不是8443.请遵循一些说明,寻求所有寻求此问题的帮助:

  1. 对于基于Linux的操作系统,最多1024个端口可用于仅与root权限绑定.
  2. 在面向生产的服务器中运行wildfly或任何其他具有root权限的web/app服务器并不是一个好主意.
  3. 在另一方面,尝试运行wildfly与'常规'用户直接绑定到端口443或80生成权限被拒绝像错误.

我上面描述的问题的解决方案是将wildfly绑定到端口8080/8443(没有root权限)并要求操作系统将流量从端口80重定向到端口8080,将端口443重定向到端口8443.之后,配置wildfly以重定向http请求端口443上的https请求而不是8443.

因此,假设wildfly正在使用端口8080上的http和基于Linux的操作系统中端口8443上的https作为服务:

1)停止野生动物: sudo service wildfly stop

2)在启动/etc/init.d/wildfly脚本中添加iptables命令,如:

if [ $launched -eq 0 ]; then
        log_warning_msg "$DESC hasn't started within the timeout allowed"
        log_warning_msg "please review file \"$JBOSS_CONSOLE_LOG\" to see the status of the service"
    else 
        iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
        iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

    fi
Run Code Online (Sandbox Code Playgroud)

PS:你在iptables的手册页上添加了一个名为"nat"的表:

NAT:

遇到创建新连接的数据包时,会查询此表.

因此,如果您在规则创建之前请求了https:// localhost:443,则已创建连接wal,因此不应用nat表.尝试使用新设备.

$launchedbash变量在哪里表示野生蝇的状态

2)在standalone.xml中,创建一个额外的套接字绑定条目:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="https-external" port="443"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
   ...

</socket-binding-group>
Run Code Online (Sandbox Code Playgroud)

注意新的标签输入 <socket-binding name="https-external" port="443"/>

3)更改http-listener以重定向到https-external而不是https:

<http-listener name="default" socket-binding="http" redirect-socket="https-external" max-header-size=...
Run Code Online (Sandbox Code Playgroud)

更改的位置是redirect-socket =" https-external "

4)重启wildfly:sudo service wildfly start

在wildfly启动后,验证console.log文件以查看任何错误报告.

因此,如果您的web.xml部分确保机密传输:

....
<security-constraint>
    ...
    <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </security-constraint>
...
Run Code Online (Sandbox Code Playgroud)

Wildfly会将端口80或8080上的请求重定向到端口443而不是8443.

Obs:最好在对它们进行任何更改之前制作/etc/init.d/wildfly脚本和standalone.xml文件配置的备份副本.

  • 很好的答案。记住 nat 表的工作原理:来自手册页“当遇到创建新连接的数据包时会查询此表”,因此如果您在防火墙规则之前对其进行了测试,则不会应用它。编辑;) (2认同)