2015-09-21 3 views
3

Я пытаюсь отправить сообщения через jms (activemq), но я хочу, чтобы это было в протоколе ssl. В настоящее время действительность работает в tcp.Как активировать в ssl

Я использую jndi с виртуальной темой и двумя очередями. Может кто-нибудь помочь мне, я судимое это, но я застреваю сервер не запускается:

http://activemq.apache.org/how-do-i-use-ssl.html

ТНХА

редактирования: Журнал говорит: «Ссылка на лицо„needClientAuth“должен заканчиваться ';' Разделитель «.

+1

Не могли бы вы отправить журналы? –

+1

выложили весь след здесь, нужно ';' не означает проблему, должна быть отсутствующая точка с запятой где-то – Vihar

+0

thx за вашу помощь: на самом деле на сайте activemq было написано: тогда как это было

ответ

12

Я отвечу на свой вопрос:

Прежде всего внутри ..../апач-ActiveMQ-5.11.1/CONF/activemq.xml:

<transportConnectors> 
    <transportConnector name="ssl" uri="ssl://0.0.0.0:61617?trace=true&amp;needClientAuth=true"/> 
</transportConnectors> 

Не забывайте & amp; (без пробела), что блокировалось на стороне сервера. На странице activemq это не написано. Также не забудьте открыть порт. Здесь (61617)

еще внутри activemq.xml

<sslContext> 
    <sslContext keyStore="file:${activemq.base}/conf/amq-server.ks" 
       keyStorePassword="PASSWORD" 
       trustStore="file:${activemq.base}/conf/amq-server.ts" 
       trustStorePassword="PASSWORD" /> 
    </sslContext> 

перезагрузки JMS; На этот раз все должно быть в порядке. Теперь, когда ваша сторона сервера в порядке, давайте перейдем к клиенту.

Я сделал это в activemq ..../apache-activemq-5.11.1/conf: (следуйте инструкциям, именам, пропуску и т. Д.).

## Create a keystore for the broker SERVER 
$ keytool -genkey -alias amq-server -keyalg RSA -keysize 2048 -validity 90 -keystore amq-server.ks 

## Export the broker SERVER certificate from the keystore 
$ keytool -export -alias amq-server -keystore amq-server.ks -file amq-server_cert 

## Create the CLIENT keystore 
$ keytool -genkey -alias amq-client -keyalg RSA -keysize 2048 -validity 90 -keystore amq-client.ks 

## Import the previous exported broker's certificate into a CLIENT truststore 
$ keytool -import -alias amq-server -keystore amq-client.ts -file amq-server_cert 

## If you want to make trusted also the client, you must export the client's certificate from the keystore 
$ keytool -export -alias amq-client -keystore amq-client.ks -file amq-client_cert 

## Import the client's exported certificate into a broker SERVER truststore 
$ keytool -import -alias amq-client -keystore amq-server.ts -file amq-client_cert 

Тогда я скачал с помощью https://winscp.net/eng/index.php моих «Amq-client.ts» и «Amq-client.ks» от моего сервера на моем компьютере (я устр на окна и сервера на Linux).

Я использовал эти два файла в качестве источника в затмении. (Я не буду объяснять, как это сделать).

Наконец, в затмении мне пришлось изменить только одну вещь, которую я должен был заменить QueueConnectionFactory на ActiveMQSslConnectionFactory:

Так что я стер

QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx 
        .lookup("jms/ConnectionFactory"); 

И вместо того, что сделал:

ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url); 
      try { 
       connectionFactory.setTrustStore(CLIENT_TS_FILE); 
       connectionFactory.setTrustStorePassword("PASSWORD asked while TS file made"); 
       connectionFactory.setKeyStore(CLIENT_KS_FILE); 
       connectionFactory.setKeyStorePassword("PASSWORD asked while KS file made"); 
      } catch (Exception e) { 
       throw new MotorException(
         "JMS Connection Failed (Trust store or key store weren't found) : ", 
         e); 
      } 

Очень мало было в Интернете, по крайней мере, для activemq и ssl, это могло бы помочь кому-то.

+0

как мы можем предоставить ssl url –

+0

Я не буду объяснять, как это сделать. lol –

+0

lol yeah Я был немного ленив, но обычно добавляю файлы в качестве источника в Eclipse ...; Я имею в виду.... –