2

X.509 証明書を WinRT アプリケーションにインポートしようとしています。証明書は、Windows の Certificates Manager から証明書とその秘密キーを 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 のこちらにあります

エクスポートされた証明書、アプリケーションの構成、または環境のエラーであるかどうかにかかわらず、このエラーが発生する理由を説明するドキュメントが見つかりません。また、それを解決するために何をする必要があるかについての提案もありません。

4

1 に答える 1

1

私のコードにも同じエラーがありました。私にとっての解決策は、Package.appxmanifestの共有ユーザー証明書エンタープライズ認証の機能を確認することでした。

于 2014-12-03T15:20:49.353 に答える