#jboss #command-line-interface #wildfly #jboss-cli
#jboss #интерфейс командной строки #wildfly #jboss-cli
Вопрос:
Я следую инструкциям из учебника: https://github.com/jbosstm/quickstart/tree/master/XTS/ssl
С помощью jboss-cli успешно добавлена область безопасности:
/core-service=management/security-realm=SSLRealm:add()
/core-service=management/security-realm=SSLRealm/server-identity=ssl:add(
keystore-path=./standalone/configuration/server.keystore,
keystore-password=client,
alias=client)
Когда я пытаюсь добавить https-listener
:
/subsystem=undertow/server=default-server/https-listener=https:add(
socket-binding="https", security-realm="SSLRealm"
)
WildFly выдает исключение:
{
"outcome" => "failed",
"failure-description" => "JBAS014750: Operation handler failed to complete",
"rolled-back" => true
}
Есть идеи, как добавить https-listener
?
Ответ №1:
Вот что сработало для меня на WildFly 8.1:
Добавить область:
[standalone@localhost:9990 /] /core-service=management/security-realm=WebSocketRealm:add()
{"outcome" => "success"}
Настройте его:
[standalone@localhost:9990 /] /core-service=management/security-realm=WebSocketRealm/server-identity=ssl:add(keystore-path=websocket.keystore, keystore-relative-to=jboss.server.config.dir, keystore-password=websocket)
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
Добавьте нового прослушивателя:
[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:add(socket-binding=https, security-realm=WebSocketRealm)
{
"outcome" => "success",
"response-headers" => {"process-state" => "reload-required"}
}
А затем перезапустите:
[standalone@localhost:9990 /] reload
Это добавило следующие фрагменты в standalone/configuration/standalone.xml:
<security-realm name="WebSocketRealm">
<server-identities>
<ssl>
<keystore path="websocket.keystore" relative-to="jboss.server.config.dir" keystore-password="websocket"/>
</ssl>
</server-identities>
</security-realm>
и
<https-listener name="https" socket-binding="https" security-realm="WebSocketRealm"/>
Какую версию WildFly вы используете?
Комментарии:
1. Нужен ли SSL-сертификат? Обычно да, но я не нахожу в ваших кодах ссылку на какой-либо SSL-сертификат
2. куда мне включить конфигурацию https-прослушивателя?
Ответ №2:
Я сделал это, адаптировав standalone.xml . Насколько я помню, шаги:
-
Добавление области безопасности для прослушивателя ssl
<security-realm name="SSLRealm"> <server-identities> <ssl protocol="TLS"> <keystore path="keystore-name" relative-to="jboss.server.config.dir" keystore-password="password" alias="alias"/> </ssl> </server-identities> <authentication> <truststore path="truststorename" relative-to="jboss.server.config.dir" keystore-password="password"/> </authentication> </security-realm>
-
Добавление https-прослушивателя в конфигурацию undertow
<https-listener name="default-https" socket-binding="https" security-realm="SSLRealm" verify-client="REQUESTED"/>
-
Добавление привязки сокета для https-прослушивателя в список привязок сокетов
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
Я еще не пытался добавить этот прослушиватель с помощью интерфейса управления, но описанный выше подход сработал отлично.
Комментарии:
1. Не уверен в этом: шаг 2 (https-прослушиватель) ссылается на socket-binding=»https», но строка, добавленная на шаге 3, называет привязку как «management-https». Я предполагаю, что это было просто скопировано. Запись для name=»https» будет аналогичной, но с другим портом, с выражением типа $ {jboss.https.port:8443} »
Ответ №3:
В моем случае хранилище ключей, которое использовалось в области безопасности, отсутствовало, когда я пытался добавить https-прослушиватель. После того, как я скопировал хранилище ключей в каталог конфигурации и выполнил reload
в CLI, я мог бы добавить https-прослушиватель с CLI.
Хотя CLI не выводит информативное сообщение об ошибке, консоль сообщает вам, что wildfly не может найти хранилище ключей.