Я пытаюсь включить HTTPS в моем приложении. В автономном XML у меня есть следующие изменения, внесенные в веб-подсистему:
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<connector name="http" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="http" socket-binding="http" redirect-port="8443"/>
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl name="https" key-alias="appName" password="password" certificate-key-file="path_to_jks"/>
</connector>
<virtual-server name="default-host" enable-welcome-root="false">
<alias name="localhost"/>
<rewrite name="redirect_https" pattern="/(.*)" substitution="https://${HOST_ENV_VAR}.domain.com:8443/$1" flags="NC,L,R=301">
<condition name="condition_https" test="%{SERVER_PORT}" pattern="8080" flags="NC"/>
</rewrite>
</virtual-server>
</subsystem>
С этими изменениями, если я запускаю свое приложение с использованием HTTP, оно автоматически перенаправляется на HTTPS. Например,
http://host:8080/index.htm
перенаправляется на:
https://host:8443/index.htm
Во время перенаправления я также wi sh добавляет доменное имя к хосту (поскольку сертификаты сервера содержат хосты с доменными именами). Так что я sh перенаправить на:
https://host.domain.com:8443/index.htm
Правило переписать, которое я написал, не работает. Я также пытался записать условие как:
<condition name="condition_https" test="%{SERVER_PORT}" pattern="8443" flags="NC"/>
На данный момент ничего не работает. Я попытался включить ведение журнала TRACE, но я не вижу никаких намеков в нем. Любая идея, как я могу достичь этого? Версия JBOSS - EAP 6.4, а версия JDK - 1.7.
Примечание. Я пытался установить enable-welcome-root = "true" в теге виртуального сервера, но он завершился ошибкой "JBWEB000250: Дочерний контейнер с имя уже существует ". Но когда я читаю где-то, нет необходимости устанавливать enable-welcome-root = "true".