Подключение к Kafka с использованием SSLStream - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь подключиться к Kafka с помощью SSLStream.
Код C #, который я пытаюсь использовать:

 using (var client = tcpClientBuilder.CreateTcpClient())
 {
     if(!client.Connected)
          client.Connect("xx.x.xxx.xx", 9093);
     using (var stream = client.GetStream())
    {
      using (var ssl = new SslStream(stream, false, ValidateCertificate))
      {                 
         ssl.AuthenticateAsClient("xx.x.xxx.xx", _certificateCollection, 
                                SslProtocols.Tls, false);
  }

Файл сертификата, который я использую, представляет собой файл PEM, а библиотека C # - это я.используется значение https://github.com/Jroland/kafka-net

Исключение, которое я получаю при обратном вызове validateCrtificate:

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

Сервер kafka работает нормально и может подключиться к нему с помощью Java.Я не могу найти ничего плохого в файлах журнала (прилагается).Код для ValidateCertificate:

 private bool ValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            if (sslPolicyErrors.ToString() != "None")
            {
                return true;
            }
            return false;
        }

У меня также есть метод рукопожатия SSLSream, вызываемый перед отправкой любого сообщения в kafka.Это выполняется без каких-либо ошибок.

private void HandShake(X509Certificate2Collection certificateCollection, IPHostEntry entry, SslStream sslStream)
        {
            try
            {
                sslStream.AuthenticateAsClient(entry.HostName, certificateCollection, SslProtocols.Default, false);
                sslStream.Write(Encoding.ASCII.GetBytes(handshake), 0, Encoding.ASCII.GetBytes("handshake").Length);
                sslStream.Flush();
            }
            catch (AuthenticationException ae)
            {
                throw;
            }
        }

Если кто-то может пролить свет на это, это было бы очень полезно .. Файл сертификата, который я использую, является файлом PEM, а библиотека C #, которую я использую, https://github.com/Jroland/kafka-net. Файлы сертификатов были правильно экспортированы в Kafka.

Я получаю сообщение об ошибке:

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

Сервер kafka запущен, и я не могу найти ничего неправильного в файлах журнала.

Примечание: я не могуподключиться к Kafka с помощью JRoland SDK ([https://github.com/Jroland/kafka-net][1])

Kafka Version: Kafka_2.11-0.10.0.0 Если кто-то может пролить свет на это, это было бы очень полезно ..

Спасибо,

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