WildFly 上的 HTTPS - 从 HTTP 重定向
HTTPS on WildFly - Redirecting from HTTP
我的应用程序 运行 在 WildFly 8.2 上,应该完全使用 HTTPS。
为此,我 web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>App</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
然后,在 standalone.xml 我有
<server name="default-server">
<http-listener name="http-default" socket-binding="http"/>
<https-listener name="https-default" socket-binding="https" security-realm="SSLRealm"/>
<host name="http-default" alias="localhost" default-web-module="sp.war">
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
<host name="https-default" alias="sponline.tdata.com" default-web-module="sp.war">
</host>
</server>
和
<security-realm name="SSLRealm">
<server-identities>
<ssl>
<keystore path="sponline_keystore.jks" relative-to="jboss.server.config.dir" keystore-password="sponline2015" alias="sponline" key-password="GxXxXXxX"/>
</ssl>
</server-identities>
</security-realm>
现在,服务器绑定了 2 个域名 - HQDATADEV.TDATA.COM 和 SPONLINE.TDATA.COM。此设置由我们的内部政策强制执行。
现在,问题是应用程序配置为仅在 SPONLINE.TDATA.COM 上具有 SSL。但是当我启动 http://SPONLINE.TDATA.COM 时,它会自动将我重定向到 .
谁能给我解释一下这种行为?并可能解决这个问题?
如果我理解正确,那么您的应用程序应该只 运行 用于 SPONLINE.TDATA.COM(因为 SSL 要求)。
我会做以下事情。在应用程序的WEB-INF/jboss-web.xml
中指定它仅对sponline
虚拟主机有效:
<jboss-web>
<context-root>/</context-root>
<virtual-host>sponline</virtual-host>
</jboss-web>
然后您可以保留 standalone.xml
中的默认主机配置并添加一个新的 - "sponline"
.
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<https-listener name="https" socket-binding="https" security-realm="SSLRealm"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
<host name="sponline" alias="sponline.tdata.com"/>
</server>
安全领域"SSLRealm"
可以保持原样。
虽然 kwart 的上述回答是正确的并且它确实解决了我的 HTTPs 问题,但我最终在 VM 上添加了一个 HTTPD 服务器来解决其他一些问题。这实际上是专家推荐的做事方式。
此外,为了弥补安全漏洞,我关闭了 public 接口,只能从 HTTPD 服务器访问。
简而言之,问题是通过架构更改解决的,而不是使用 WildFly 救火!
我的应用程序 运行 在 WildFly 8.2 上,应该完全使用 HTTPS。
为此,我 web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>App</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
然后,在 standalone.xml 我有
<server name="default-server">
<http-listener name="http-default" socket-binding="http"/>
<https-listener name="https-default" socket-binding="https" security-realm="SSLRealm"/>
<host name="http-default" alias="localhost" default-web-module="sp.war">
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
<host name="https-default" alias="sponline.tdata.com" default-web-module="sp.war">
</host>
</server>
和
<security-realm name="SSLRealm">
<server-identities>
<ssl>
<keystore path="sponline_keystore.jks" relative-to="jboss.server.config.dir" keystore-password="sponline2015" alias="sponline" key-password="GxXxXXxX"/>
</ssl>
</server-identities>
</security-realm>
现在,服务器绑定了 2 个域名 - HQDATADEV.TDATA.COM 和 SPONLINE.TDATA.COM。此设置由我们的内部政策强制执行。
现在,问题是应用程序配置为仅在 SPONLINE.TDATA.COM 上具有 SSL。但是当我启动 http://SPONLINE.TDATA.COM 时,它会自动将我重定向到 .
谁能给我解释一下这种行为?并可能解决这个问题?
如果我理解正确,那么您的应用程序应该只 运行 用于 SPONLINE.TDATA.COM(因为 SSL 要求)。
我会做以下事情。在应用程序的WEB-INF/jboss-web.xml
中指定它仅对sponline
虚拟主机有效:
<jboss-web>
<context-root>/</context-root>
<virtual-host>sponline</virtual-host>
</jboss-web>
然后您可以保留 standalone.xml
中的默认主机配置并添加一个新的 - "sponline"
.
<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<https-listener name="https" socket-binding="https" security-realm="SSLRealm"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
<host name="sponline" alias="sponline.tdata.com"/>
</server>
安全领域"SSLRealm"
可以保持原样。
虽然 kwart 的上述回答是正确的并且它确实解决了我的 HTTPs 问题,但我最终在 VM 上添加了一个 HTTPD 服务器来解决其他一些问题。这实际上是专家推荐的做事方式。
此外,为了弥补安全漏洞,我关闭了 public 接口,只能从 HTTPD 服务器访问。
简而言之,问题是通过架构更改解决的,而不是使用 WildFly 救火!