Не удается заставить SSL работать с MassTransit и cloudamqp

#ssl #asp.net-core #masstransit #cloudamqp

#ssl #asp.net-ядро #masstransit #cloudamqp

Вопрос:

Я изо всех сил пытался выяснить, как я должен настроить MassTransit и наш новый выделенный экземпляр cloudamqp для работы с SSL (примечание: без SSL все работает нормально).

Я попытался добавить строку useSSL в приведенный ниже код, который я нашел в какой-то старой документации, но это не сработало:

 var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
          {
              var host = sbc.Host(new Uri(messageBusConfiguration["Host"]), h =>
              {
                   h.Username(messageBusConfiguration["Username"]);
                   h.Password(messageBusConfiguration["Password"]);
                   h.UseSsl(s => {});
               });
            });
  

В cloudamqp я также настроил его на разрешение ampqs, и мои сервисы / API настроены и выполняются в IIS с использованием HTTPs без каких-либо проблем.

Я подозреваю, что мне здесь не хватает чего-то фундаментального, но я не могу найти никакой документации по этому поводу.

Ответ №1:

У меня это работает, обратите внимание, что порт должен быть указан.

 var busControl = Bus.Factory.CreateUsingRabbitMq(x =>
{
    var host = x.Host(new Uri("rabbitmq://wombat.rmq.cloudamqp.com:5671/your_vhost/"), h =>
    {
        h.Username("your_username");
        h.Password("your_password");

        h.UseSsl(s =>
        {
            s.Protocol = SslProtocols.Tls12;
        });
    });

    x.ReceiveEndpoint(host, "input_queue", e =>
    {
    });
});

await busControl.StartAsync(new CancellationTokenSource(TimeSpan.FromSeconds(30)).Token);

await busControl.StopAsync();
  

Комментарии:

1. Кроме того, я только что добавил автоматический выбор порта для указания rabbitmqs or amqps в качестве схемы в URI и автоматический выбор SSL.

2. Это сработало отлично. Однако я не уверен, что полностью понимаю ваш комментарий по поводу автоматического выбора порта. Это будет в более поздней версии? Означает ли это, что я могу просто изменить URI на rabbitmqs://<cloudampqhost> / <vhost> без номера порта?

3. Это будет в более поздних версиях, но пока вам нужно указать порт.

4. Могу ли я изменить схему «rabbitmq: //» на amqp: // и все еще работать?

5. Да, он будет работать с любым из них amqp или использовать amqps для TLS.