Как указать локальное пользовательское хранилище доверенных сертификатов SSL для клиента Hornetq при подключении через сервер имен JNDI - PullRequest
0 голосов
/ 29 марта 2019

У нас есть клиент Java (приложение mule), который использует клиент hornetq (v2.3.25.SP20) для подключения к удаленному серверу HornetQ через сервер имен JNDI (порт 1099). Соединение защищено с помощью SSL. Драйвер требует, чтобы свойство javax.net.ssl.trustStore было установлено явно. В противном случае он не находит хранилище доверия.

Мы хотели бы указать пользовательское хранилище доверенных сертификатов для сеанса. Но установка глобального свойства javax.net.ssl.trustStore может повлиять на другие приложения. Итак, мы ищем альтернативу.

Я написал собственный менеджер доверия (X509TrustManager), который указывает на пользовательское хранилище доверенных сертификатов. Но проблема в том, что он используется только для установления соединения с сервером JNDI. Затем фактический объект подключения получает местоположение хранилища доверенных сертификатов с удаленного сервера (в случае, если, конечно, javax.net.ssl.trustStore не задан).
Выдается ошибка HQ212007:

connector.create или connectorFactory.createConnector никогда не должны скинуть исключение, реализация плохо себя ведет, но разберемся с этим все равно.

Невозможно создать NettyConnector для myserver: 4447
Не удалось найти магазин в хранилище ключей удаленного сервера

Погуглив код ошибки, я обнаружил очень похожую проблему, описанную без решения здесь .

Итак, есть ли другой способ указать путь к хранилищу доверенных сертификатов для клиента hornetq при подключении через JNDI, чтобы он не влиял на другие приложения, работающие в той же системе виртуальных машин? Или, может быть, есть способ полностью отключить проверку SSL-сертификата на стороне клиента - это будет работать и для нас?

1 Ответ

1 голос
/ 29 марта 2019

Существуют системные свойства, специфичные для HornetQ, для настройки параметров конфигурации SSL.Проверьте документацию для HornetQ 2.4.0 .

Эти свойства были добавлены после 2.3.0.Final, но перенесены в ветку 2.3.x, поэтому они доступны в 2.3.25.SP20, но не документированы в документах 2.3.0.Final,

Короче говоря, вы можете использовать эти системные свойства вместо глобальных:

  • org.hornetq.ssl.keyStore
  • org.hornetq.ssl.keyStorePassword
  • org.hornetq.ssl.trustStore
  • org.hornetq.ssl.trustStorePassword
...