Проблемы с развертыванием действия HTTPRouter с файлом хранилища ключей - PullRequest
3 голосов
/ 13 сентября 2011

Я пытаюсь создать файл хранилища ключей и доверенных сертификатов из самозаверяющего сертификата для использования в действии HTTPRouter, развернутом в JBoss ESB.Я использовал openssl для получения интересующего сертификата и сгенерировал файл хранилища ключей и файл хранилища доверенных сертификатов со следующими командами:

keytool -import -alias ejb-ssl -file cert.der -keystore cert.truststore
keytool -import -alias ejb-ssl -file cert.der -keystore cert.keystore -trustcacerts

Перед созданием файлов хранилища ключей и хранилища доверенных сертификатов я конвертирую сертификат в формат X509, в противном случаеУтилита keytool не работает, возвращая исключение с сообщением «вход не является сертификатом x.509».Чтобы преобразовать интересующий сертификат, я использую следующую команду:

openssl x509 -in cert.cer -outform DER -out cert.der

Затем я скопировал эти файлы в папку esbcontent / META-INF моего ESB.Ниже приведены свойства, которые я устанавливаю для действия HTTPRouter

#Configurators
configurators=HttpProtocol

#HttpProtocol Config...
protocol-socket-factory=org.jboss.soa.esb.http.protocol.SelfSignedSSLProtocolSocketFactoryBuilder

keystore=/META-INF/keystore/cert.keystore
keystore-passw=password
truststore=/META-INF/truststore/cert.truststore
truststore-passw=password

При развертывании ESB я получаю следующую ошибку:

Caused by: org.jboss.soa.esb.ConfigurationException: Invalid 'keystore' config.  Must be valid URL.

Просмотр сертификата, полученного от третьей сторонывеб-сервис, все URL выглядят нормально.Кто-нибудь знает, почему JBoss не принимает URL в сгенерированном хранилище ключей?На этом я начинаю рвать на себе волосы!

Кроме того, я пытался использовать org.apache.commons.httpclient.contrib.ssl.EasySSLProtocolSocketFactory для фабрики протокола-сокета.При использовании этого ESB развертывает ОК.Однако HTTPRouter, похоже, не отправляет запрос стороннему веб-сервису.Я использовал SoapUI, чтобы установить, что веб-сервис в порядке, поэтому я думаю, что это проблема с моей конфигурацией действия HTTPRouter.

Любая предлагаемая помощь очень важна!

1 Ответ

2 голосов
/ 16 сентября 2011

Мне потребовалось очень много времени, чтобы разобраться, но решение оказалось очень простым.Путь к файлу хранилища ключей должен быть абсолютным.Это НЕ МОЖЕТ БЫТЬ ОТНОСИТЕЛЬНЫМ!Поэтому замена

'/META-INF/keystore/cert.keystore' path 

на

'C:/dev/server/jboss/jboss-as/server/default/deploy/MyEsb.esb/META-INF/keystore/cert.keystore

Устранена проблема!

Оставлять файл свойств с этим абсолютным путем не всегда удобно при развертывании ESB в различных различных средах (Windows и Ubuntu).Я использую gradle в качестве инструмента сборки, поэтому я использовал функцию ReplaceTokens, чтобы заменить токен хранилища ключей на требуемый абсолютный путь.Я полагаю, вы также можете скопировать файл хранилища ключей в каталог развертывания, чтобы он был доступен для всех ESB, которые в нем нуждаются.

Надеюсь, это поможет кому-то еще, кто сталкивается с этой проблемой.В конце концов, это было простое решение, но нигде в документации не упоминается файл хранилища ключей с абсолютным путем.Но это помогло мне решить проблему.

Спасибо

...