Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RPi上的UWP-尝试设置到Azure-如何获取X.509证书_Azure_Uwp_Raspberry Pi_Provisioning_Windows 10 Iot Core - Fatal编程技术网

RPi上的UWP-尝试设置到Azure-如何获取X.509证书

RPi上的UWP-尝试设置到Azure-如何获取X.509证书,azure,uwp,raspberry-pi,provisioning,windows-10-iot-core,Azure,Uwp,Raspberry Pi,Provisioning,Windows 10 Iot Core,我正在使用一个RPi/UWP程序,该程序在没有X.509证书的情况下运行良好。 如果我手动设置连接,我连接Azure IoT hub不会有问题,但由于我们打算在100年代之前(如果不是数千年的话)提供这些连接,显然这不起作用 我已经看过了使用资源调配服务的代码示例,但它们都在仿真中。 查看代码,您必须加载X.509证书 certificateCollection.Import(s_certificateFileName, certificatePassword, X509KeyS

我正在使用一个RPi/UWP程序,该程序在没有X.509证书的情况下运行良好。 如果我手动设置连接,我连接Azure IoT hub不会有问题,但由于我们打算在100年代之前(如果不是数千年的话)提供这些连接,显然这不起作用

我已经看过了使用资源调配服务的代码示例,但它们都在仿真中。 查看代码,您必须加载X.509证书

        certificateCollection.Import(s_certificateFileName, certificatePassword, X509KeyStorageFlags.UserKeySet);
这就是我迷路的地方——RPi上要加载的证书在哪里? 基本上,我想我知道如何在一个普通的Win10应用程序中做到这一点,但当你在RPi a 3B上使用UWP时,由于3B+不受支持-可能必须切换到Core。任何人都有一些示例代码,或者可以为我指出正确的方向?

这提供了UWP应用程序可用的加密功能概述。 您可以生成证书文件,然后将其复制或导入设备。如果将证书文件复制到设备,则需要添加将文件访问到UWP应用程序的功能。请在MSDN论坛中参考此内容。以下代码可用于将pfx证书导入您的设备,然后从cert store加载

进口:

负载:


问题是在哪里找到它来加载它,但我想我明白你在做什么了
StorageFolder certificatesFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Certificates");

StorageFile certificateFile = await certificatesFolder.GetFileAsync("ClientCertificate .pfx  ");

IBuffer certificateBuffer = await FileIO.ReadBufferAsync(certificateFile);

string encodedCertificate = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(certificateBuffer);

await CertificateEnrollmentManager.ImportPfxDataAsync(encodedCertificate, "password", ExportOption.NotExportable, KeyProtectionLevel.NoConsent, InstallOptions.None, "certificateOne");
CertificateQuery certQuery = new CertificateQuery();
 certQuery.FriendlyName = "certificateOne";
 IReadOnlyList<Certificate> certificates = await CertificateStores.FindAllAsync(certQuery);