Как аутентифицировать IoT-устройство с помощью X509Certificate - PullRequest
0 голосов
/ 11 января 2019

Я следовал этому руководству по «Azure IoT-хабу с использованием аутентификации сертификата X.509». Образец консольного приложения работает нормально, и мне удалось отправить сообщение на существующий IoThub. Однако, когда я пытаюсь соединиться с моим существующим IoThub из моего UWP, используя тот же код, тот же сертификат и с того же устройства, я получаю неспецифическое исключение Message = "Exception from HRESULT: 0x80072F0C". Мне было интересно, какова основная разница между UWP и консольным приложением при подключении к концентратору IoT с использованием сертификата X.509.

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindByThumbprint, "thumbprint", false);
if (certs.Count > 0 && certs[0].HasPrivateKey)
{
    var auth = new DeviceAuthenticationWithX509Certificate("deviceId", "X509Certificate2");
    deviceClient = DeviceClient.Create("***.azure-devices.net", auth, TransportType.Amqp);

    var message = new Message(Encoding.ASCII.GetBytes("Hello"));
    await deviceClient.SendEventAsync(message);
    outMessage = await ReceiveCloudMessageAsync();
}
else
{
     throw new Exception("cert not found");
}

Мне удалось получить самоподписанный сертификат и закрытый ключ, но в 'SendEventAsync' выдается исключение.

...