Ошибка аутентификации TLS при отправке сообщения на Azure IoT Hub в unix - PullRequest
0 голосов
/ 24 марта 2020

Я использую ядро ​​do tnet для разработки приложения, которое будет отправлять сообщения в IoT Hub. Это приложение будет работать под Unix. Для этого я использовал аутентификацию сертификата X509, как описано в следующей ссылке:

https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-security-x509-get-started

Если я запускаю приложение с использованием Visual Studio 2019 в режиме отладки приложение работает отлично. С другой стороны, при работе под unix он всегда выдает «Ошибка аутентификации TLS». исключение.

Трассировка стека: "в Microsoft . Azure .Devices.Client.Transport.ErrorDelegatingHandler.ExecuteWithErrorHandlingAsync [T] (Func`1 asyncOperation) в Microsoft. Azure .Devices.Client.Transport.RetryDelegatingHandler. <> C___0playClay. d.MoveNext () --- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение --- в Microsoft. Azure .Devices.Client.Transport.RetryDelegatingHandler.EnsureOpenedAsyn c (CancellationToken cancellationToken) в Microsoft. Azure .Devices.Client.Transport.RetryDelegatingHandler. <> c__DisplayClass14_0. d.MoveNext () --- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение --- в Microsoft. Azure .Devices.Client.Transport.RetryDelegatingHandler.SendEventAsyn c (Сообщение сообщения, CancellationToken cancellationToken) в Venom , ) в C: \ SBNRepo \ Venom \ VenomIoT \ VenomIoTDevice.cs: строка 41 в Venom.IoT.VenomIoTDevice.Start (CancellationToken cancellationToken) в C: \ SBNRepo \ Venom \ VenomIoT \ VenomIoT 58.vice

Я захватил внутреннее исключение, и оно выглядит следующим образом: Внутреннее исключение: System.Security.Authentication.AuthenticationException - удаленный сертификат недействителен в соответствии с процедурой проверки.

Кажется, что сертификаты не совпадают ... b но почему они отменяют Windows?

Вот как я создаю свое устройство:

var cert = new X509Certificate2(certPath, certPwd);
var auth = new DeviceAuthenticationWithX509Certificate(deviceId, cert);
_deviceClient = DeviceClient.Create(iotHubUri, auth, TransportType.Mqtt);

и вот как я отправляю d2 c message:

var messageString = JsonConvert.SerializeObject(myMessage);
var message = new Message(Encoding.ASCII.GetBytes(messageString));

await _deviceClient.SendEventAsync(message, cancellationToken);

Последние пару дней я боролся с этим, действительно пытался выяснить это ... есть предложения? Они будут очень признательны.

Заранее спасибо!

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