0

別のアプリから自分のアプリの証明書ストアにアクセスしたいと考えています。私はすでにファイルで有効"sharedusercertificates"にしていpackage.appmanifestます。

Windows.Storage.StorageFile selectedCertFile = await folder.GetFileAsync(fileName);
IBuffer buffer = await FileIO.ReadBufferAsync(selectedCertFile);

string certificateData = CryptographicBuffer.EncodeToBase64String(buffer);
string password = "password";

await CertificateEnrollmentManager.ImportPfxDataAsync(
certificateData,
password,
ExportOption.NotExportable,
KeyProtectionLevel.ConsentWithPassword,
InstallOptions.None,
selectedCertFile.DisplayName);

私自身のアプリでは、インストールされている証明書を問題なく一覧表示できます。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var task = CertificateStores.FindAllAsync();
    task.AsTask().Wait();
    var certlist = task.GetResults();
    Debug.WriteLine("Cert count: {0}", certlist.Count);
    LoadCertList(certlist);
}

private void LoadCertList(IReadOnlyList<Certificate> certificateList)
{
    listbox1.Items.Clear();

    foreach (Certificate cert in certificateList)
    {
        listbox1.Items.Add(cert.Subject);
    }
}

別のアプリからそれらにアクセスしようとすると、リストされません。Windows Phone 8.1 のメール クライアント設定にも、インストールされている証明書がありません。プログラムではなく、定期的にインストールされた証明書が一覧表示されます。

カスタム証明書をシステムの証明書ストアにインストールする方法はありますか? そのため、他のアプリで使用できます。

何日もウェブを検索してきましたが、解決策が見つかりませんでした。

これにより、それが可能になるはずです。

「sharedUserCertificates 機能は、アプリ コンテナーに、すべてのユーザー ストアとスマート カードの信頼されたルート ストアに含まれる証明書とキーへの読み取りアクセスを許可します。」 https://msdn.microsoft.com/en-us/library/windows/apps/hh465025 .aspx

私は何か見落としてますか?助けていただければ幸いです。

ディノ

4

1 に答える 1

0

CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync他のアプリから証明書にアクセスできるようにする場合は、 ではなくを使用して証明書を登録する必要がありますCertificateEnrollmentManager.ImportPfxDataAsync

有効期限が切れていない限り、共有証明書を削除する方法はないことに注意してください (InstallOptions.DeleteExpiredのパラメータとして使用ImportPfxDataAsync)。

また、この方法で共有する証明書が多いほど、証明書ストアに対するクエリが遅くなります。

于 2015-09-29T08:58:42.217 に答える