Wildfly 11 Elytron в одну сторону и в две стороны одновременно
У нас есть веб-приложение с двумя конечными точками. Конечные точки должны быть доступны через разные порты 8443
а также 9443
,
Для веб-приложения нам нужен один способ ssl и два способа настройки ssl. Только одна конечная точка защищена двухсторонним протоколом, а остальная часть приложения должна быть защищена с помощью https.
https://localhost:8443/webservice/monitoring -> https
https://localhost:9443/webservice/management/ -> client/server auth
Я следовал инструкции в документации Wildfly о том, как включить односторонний ssl и двухсторонний ssl с проверкой подлинности клиента в подсистеме elytron. https://docs.jboss.org/author/display/WFLY/Using+the+Elytron+Subsystem
Конфигурации работают нормально сами по себе, но если я пытаюсь объединить их только один - работает аутентификация https или сервер / клиент (зависит от того, какой https-listener
ssl-context
настроен).
Я добавил дополнительный https-listener
а также socket-binding
к которому относится сфера клиент / сервер.
standalone.xml
...
<server-ssl-contexts>
<server-ssl-context name="https-serverauth" protocols="TLSv1.2" key-manager="SSL-Server_Manager"/>
<server-ssl-context name="https-mutualauth" security-domain="management-api" protocols="TLSv1.2" need-client-auth="true" authentication-optional="true" key-manager="SSL-Server_Manager" trust-manager="Client_TrustManager"/>
</server-ssl-contexts>
...
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" enable-http2="true"/>
<https-listener name="https-serverauth" socket-binding="https" ssl-context="https-serverauth" enable-http2="true"/>
<https-listener name="https-mutualauth" socket-binding="https-mutualauth" ssl-context="https-mutualauth" enable-http2="true"/>
<host name="default-host" alias="localhost">
<http-invoker security-realm="ApplicationRealm"/>
</host>
....
<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:29990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:29993}"/>
<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-mutualauth" port="${jboss.https.port:9443}"/>
<socket-binding name="txn-recovery-environment" port="24712"/>
<socket-binding name="txn-status-manager" port="24713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
web.xml
<security-constraint>
<web-resource-collection>
<url-pattern>/management/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>management-api-realm</realm-name>
</login-config>
</security-constraint>
У меня проблема в том, что я могу получить доступ к mangament
конечная точка на 8443
но если я попытаюсь получить доступ к конечной точке на 9443
я бежал в тайм-аут. Я думаю, что у меня есть ошибка с перенаправлением порта + отсутствующая конфигурация, чтобы сделать мое приложение доступным на 9443
и для конфигурации области для запуска.