我正在尝试将 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
如下:
mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常
WinRT 信息:_InstallResponse
附加信息:访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
我要上传的证书在我的 SkyDrive here上。
我找不到任何文档来解释为什么我可能会收到此错误,并且没有建议我需要做什么来解决它,无论是导出的证书、应用程序的配置还是环境中的错误。