我正在尝试将X.509证书导入我的WinRT应用程序。证书是通过从Windows中的证书管理器以PXCS#12格式导出证书及其私钥生成的。
我正在使用FileOpenPicker
来选择文件。为了便于测试,我已将证书的密码硬编码到我的方法中:
private async void LoadCertificateAsync()
{
var picker = new FileOpenPicker();
picker.SuggestedStartLocation = PickerLocationId.Desktop;
picker.FileTypeFilter.Add(".pfx");
picker.ViewMode = PickerViewMode.List;
var file = await picker.PickSingleFileAsync();
var buffer = await FileIO.ReadBufferAsync(file);
string certificateData = CryptographicBuffer.EncodeToBase64String(buffer);
string password = "47679005-c8b8-47b5-b54c-277b12854973";
await CertificateEnrollmentManager.ImportPfxDataAsync(
certificateData,
password,
ExportOption.NotExportable,
KeyProtectionLevel.NoConsent,
InstallOptions.None,
"Client Certificate");
}
代码最后会调用ImportPfxDataAsync
,此时我会收到UnauthorisedAccessException
,如下所示:
“System.UnauthorizedAccessException”类型的未处理异常 发生在mscorlib.dll
WinRT信息:_InstallResponse
其他信息:访问被拒绝。 (HRESULT的例外情况: 0x80070005(E_ACCESSDENIED))
我正在尝试上传的证书位于我的SkyDrive here上。
我找不到任何文档来解释为什么我可能会收到此错误,也没有建议我需要做什么来解决它,无论是导出的证书中的错误,应用程序的配置还是环境。< / p>
答案 0 :(得分:1)
我的代码中出现了同样的错误。 我的解决方案是检查 Package.appxmanifest
中共享用户证书和企业身份验证的功能