rabbitmq, Java-клиент работает через SSL, а .NET - нет - PullRequest
0 голосов
/ 17 октября 2018

Я новичок в rabbitmq, но мне нужно подключиться к удаленному брокеру, чтобы отправлять и получать сообщения.Удаленный сервер находится вне моего контроля, и почти невозможно получить ответы от его команды.Тем не менее, в моем распоряжении есть адрес, порт, виртуальный хост и учетные данные пользователя.Сервер использует TLS v1.2.Проблема в том, что я не могу установить соединение с сервером с клиентом .NET.Клиент - это «rabbitmq.client.5.1.0», .NET Framework 4.5.1 и VS 2017. Мой код:

public bool Start() {
  try {
    var f = new ConnectionFactory();
    f.UserName = "TestUser";
    f.Password = "TestPwd";
    f.HostName = "x.x.x.x";
    f.Port = 5673;
    f.VirtualHost = "TestVH";

    f.Ssl.Version = SslProtocols.Tls12;
    f.Ssl.Enabled = true;
    f.Ssl.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors
        | SslPolicyErrors.RemoteCertificateNameMismatch
        | SslPolicyErrors.RemoteCertificateNotAvailable;
    var c = f.CreateConnection();
  } catch( Exception e ) {
    throw e;
  }
}

Выдает исключение, внутренняя часть которого:

Ошибка аутентификации, поскольку удаленная сторона закрыла транспортный поток.

( Захват Wireshark ).

Если я делаю это с Java (1.8, amqp-client-4.0.2), Я могу успешно подключиться к серверу.

public static void main( String[] args ) throws Exception{
  ConnectionFactory factory = new ConnectionFactory();
  factory.setHost("x.x.x.x");
  factory.setPort(5673);
  factory.setUsername( "TestUser" );
  factory.setPassword( "TestPwd" );
  factory.setVirtualHost( "TestVH" );

  factory.useSslProtocol("TLSv1.2");
  Connection conn = factory.newConnection();
}

захват Wireshark

Я хотел бы использовать C #, чтобы выполнить работу, но я не могу отсортировать этовещь внеЛюбая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 17 октября 2018

попробуйте изменить эту строку:

f.Ssl.Version = SslProtocols.Tls12;

на эту:

f.Ssl.Version = SslProtocols.Tls12 | SslProtocols.Ssl3 | SslProtocols.Tls11 | SslProtocols.Ssl2;

Если это сработает, вы сузите их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...