在unix下向Azure IoT Hub发送消息时发生TLS身份验证错误

在unix下向Azure IoT Hub发送消息时发生TLS身份验证错误,unix,.net-core,azure-iot-hub,x509certificate2,Unix,.net Core,Azure Iot Hub,X509certificate2,我正在使用dotnet core开发一个将向物联网中心发送消息的应用程序。此应用程序将在Unix下运行。为此,我使用了X509证书身份验证,如下链接所述: 如果我在调试模式下使用Visual Studio 2019运行该应用程序,则该应用程序可以完美运行。另一方面,在unix下运行时,它总是抛出“TLS身份验证错误”。异常 堆栈跟踪: “在Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.ExecuteWithErr

我正在使用dotnet core开发一个将向物联网中心发送消息的应用程序。此应用程序将在Unix下运行。为此,我使用了X509证书身份验证,如下链接所述:

如果我在调试模式下使用Visual Studio 2019运行该应用程序,则该应用程序可以完美运行。另一方面,在unix下运行时,它总是抛出“TLS身份验证错误”。异常

堆栈跟踪: “在Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.ExecuteWithErrorHandlingAsync[T](Func`1异步操作) 在Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.c__DisplayClass33_0.d.MoveNext()中 ---来自引发异常的上一个位置的堆栈结束跟踪--- 在Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.EnsureRecoveredAsync(CancellationToken CancellationToken) 在Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.c__DisplayClass14_0.d.MoveNext()中 ---来自引发异常的上一个位置的堆栈结束跟踪--- 位于Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.SendEventAsync(消息消息,CancellationToken CancellationToken) 在C:\SBNRepo\Venom\Venoliot\IoT\IoDeviceClient.cs中的Venom.IoT.IoDeviceClient.SendEventAsync(消息消息,CancellationToken CancellationToken)处:第43行 在C:\SBNRepo\Venom\Venoliot\VenoliotDevice.cs中的Venom.IoT.VenoliotDevice.SendVenoliotMessage(VenoliotMessage VenoliotMessage,CancellationToken CancellationToken)处:第41行 在C:\SBNRepo\Venom\Venoliot\VenoliotDevice.cs中的Venom.IoT.VenoliotDevice.Start(CancellationToken CancellationToken)处(CancellationToken CancellationToken),第58行“

我捕获了内部异常,如下所示: 内部异常:System.Security.Authentication.AuthenticationException-根据验证过程,远程证书无效。

证书似乎不匹配……但为什么它们在Windows下运行?

这就是我创建设备Instance的方式:

var cert = new X509Certificate2(certPath, certPwd);
var auth = new DeviceAuthenticationWithX509Certificate(deviceId, cert);
_deviceClient = DeviceClient.Create(iotHubUri, auth, TransportType.Mqtt);
这就是我发送d2c信息的方式:

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

await _deviceClient.SendEventAsync(message, cancellationToken);
在过去的几天里,我一直在努力解决这个问题,真的很想弄明白。。。有什么建议吗?他们会非常感激的

提前谢谢