所以我已经向我的SSL
添加了wildfly 9
证书并且它正常运行,但我想配置standalone.xml
来https
上port 443
不在port 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>
答案 0 :(得分:6)
请提供有关您的环境和错误的更准确的详细信息。
我和你有类似的需求。用户通过网络访问我们的系统,其中唯一的请求是在端口80或443上。当客户在端口80上调用系统时,wildfly重定向到端口8443,用户无法连接到系统。解决方案是将wildfly重定向到端口443而不是8443.请按照一些说明为所有寻求此问题的帮助:
我上面描述的问题的解决方案是将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
PS:您在iptables的手册页中添加了一个名为“nat”的表的规则:
NAT:
当遇到创建新连接的数据包时,会查询此表。
因此,如果您在规则创建之前请求https://localhost:443,则已创建连接wal,因此不应用nat表。尝试使用新设备。
其中$launched
是一个bash变量来表示wildfly的状态
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>
注意新标记条目 <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=...
更改为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>
...
Wildfly会将端口80或8080上的请求重定向到端口443而不是8443。
Obs:最好先制作/etc/init.d/wildfly脚本和standalone.xml文件配置的备份副本,然后再对它们进行任何更改。