Защита и шифрование сообщений ActiveMQ с помощью .NET API - PullRequest
0 голосов
/ 02 октября 2019

Я создаю программу на C #, которая отправляет сообщения с ActiveMQ, например:

IConnectionFactory factory = new ConnectionFactory("activemq:tcp://localhost:61616");
connection = (Connection)factory.CreateConnection();
connection.Start();
session = connection.CreateSession();
producer = session.CreateProducer(new ActiveMQTopic("topic1"));
ITextMessage msg = producer.CreateTextMessage();
msg.Text = Body;
producer.Send(msg);

Как я могу отправлять сообщения безопасным способом, используя TLS / SSL с портом 443? Что мне нужно сделать на стороне клиента (также .NET), чтобы получить его? Есть ли способ настроить клиенты на получение только таких защищенных сообщений и отклонять обычные сообщения?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Я постараюсь упомянуть всю соответствующую информацию в одном месте.
Для одностороннего TLS почти не требуется конфигурация на стороне клиента, просто обновите строку подключения activemq:ssl://broker.host:61617. Бремя сертификации лежит на сервере.

Чтобы настроить локального брокера ActiveMQ

Сначала создайте самозаверяющий ключ в файле хранилища ключей server.ts

<JAVA_HOME>\bin\keytool -genkey -alias broker -keyalg RSA -keystore <AMQ_HOME>\conf\server.ks

Затем отредактируйтефайл конфигурации ([AMQ Install Dir] \ conf \ activemq.xml)
определить контекст ssl

<broker ...>
...
  <sslContext> 
    <sslContext keyStore="file:${activemq.conf}/server.ks"
              keyStorePassword="password" /> 
  </sslContext>

настроить транспорт ssl

<transportConnectors>
    <transportConnector name="ssl" uri="ssl://localhost:61617" />
</transportConnectors>

Наконец запустить / перезапустить брокер ActiveMQ

Теперь вы можете установить соединение, используя следующую строку подключения:
activemq:ssl://localhost:61617?transport.acceptInvalidBrokerCert=true

На данный момент у вас должен быть рабочий прототип! и должен начать работать с реальными сертификатами.

Использование самозаверяющего сертификата

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

экспорт:
<JAVA_HOME>\bin\keytool -export -alias broker -keystore <AMQ_HOME>\conf\server.ks -file broker_cert

строка подключения:
activemq:ssl://localhost:61617?transport.BrokerCertFilename=broker_cert

двусторонний TLS

продолжение следует ...

0 голосов
/ 02 октября 2019

Необходимо настроить SSL на посреднике , а затем использовать правильно настроенное клиентское соединение с использованием транспорта SSL для подключения к посреднику. Это старая статья здесь о клиенте .NET, использующем SSL.

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

...