Проверка подлинности SSL-сертификата обхода Linux работает некорректно RabbitMQ, Есть ли какие-либо решения? - PullRequest
0 голосов
/ 06 марта 2019

В настоящее время я пытаюсь подключиться к RabbitMQ через .NET, и при попытке обойти проверку SSL-сертификата я получаю следующую ошибку:

 Unhandled Exception: RabbitMQ.Client.Exceptions.BrokerUnreachableException:
 None of the specified endpoints were reachable ---> System.AggregateException:
 One or more errors occurred. (Authentication failed, see inner exception.) ---> 
 System.Security.Authentication.AuthenticationException: Authentication failed, 
 see inner exception. ---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL 
 error - SSL_ERROR_SSL. ---> Interop+Crypto+OpenSslCryptographicException:
 error:14090087:SSL routines:ssl3_get_server_certificate:cert length mismatch

На сервере отключены SSL2 и SSL3.Мы пытаемся использовать TLS1.2, который включен на сервере.

Это код, который я запускаю в Linux, и я проверил этот код на компьютере с Windows, и он сработал.Кажется, что проблема возникает только на машине Linux.Это Amazon Linux Distro, но эта проблема возникает и в Ubuntu.

 public void Connection(bool useTLS){

     ConnectionFactory factory = new ConnectionFactory();
     factory.Port = 5671;
     factory.UserName = "user";
     factory.Password = "password";
     factory.VirtualHost = "";
     factory.HostName = "develop.example.com";


     factory.Ssl.Enabled = true;
     factory.Ssl.Version = System.Security.Authentication.SslProtocols.Tls12;
     factory.Ssl.CertificateValidationCallback = 
       (sender, ConsumerTagConvention, chain, SslPolicyErrors) => { return true; };
     factory.Ssl.AcceptablePolicyErrors |= 
        System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors | 
        System.Net.Security.SslPolicyErrors.RemoteCertificateNameMismatch | 
        System.Net.Security.SslPolicyErrors.RemoteCertificateNotAvailable;

     IConnection conn = factory.CreateConnection();

     if (conn.IsOpen)
     {
         Console.WriteLine("Connected");
         conn.Close();
     }
     else
         Console.WriteLine("Failed");
     }

Это фрагмент кода, используемого для подключения, как вы можете видеть, мы добавляем ошибки политики SSL, а также метод CertificateValidationCallBack.Не уверен, что это просто проблема Linux и есть ли какая-то работа вокруг

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