Получить список сертификатов из хранилища сертификатов в C # - PullRequest
34 голосов
/ 30 июля 2009

Для безопасного приложения мне нужно выбрать сертификат в диалоговом окне. Как я могу получить доступ к хранилищу сертификатов или его части (например, storeLocation="Local Machine" и storeName="My") с помощью C # и получить оттуда коллекцию всех сертификатов? Заранее спасибо за помощь.

Ответы [ 4 ]

58 голосов
/ 17 мая 2011
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

store.Open(OpenFlags.ReadOnly);

foreach (X509Certificate2 certificate in store.Certificates){
    //TODO's
}
16 голосов
/ 26 июля 2011

Попробуйте это:

//using System.Security.Cryptography.X509Certificates;
public static X509Certificate2 selectCert(StoreName store, StoreLocation location, string windowTitle, string windowMsg)
{

    X509Certificate2 certSelected = null;
    X509Store x509Store = new X509Store(store, location);
    x509Store.Open(OpenFlags.ReadOnly);

    X509Certificate2Collection col = x509Store.Certificates;
    X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection);

    if (sel.Count > 0)
    {
        X509Certificate2Enumerator en = sel.GetEnumerator();
        en.MoveNext();
        certSelected = en.Current;
    }

    x509Store.Close();

    return certSelected;
}
9 голосов
/ 15 марта 2015

Самый простой способ сделать это - открыть нужное хранилище сертификатов, а затем использовать X509Certificate2UI.

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var selectedCertificate = X509Certificate2UI.SelectFromCollection(
    store.Certificates, 
    "Title", 
    "MSG", 
    X509SelectionFlag.SingleSelection);

Дополнительная информация в X509Certificate2UI на MSDN .

4 голосов
/ 30 июля 2009

Да - свойство X509Store.Certificates возвращает снимок хранилища сертификатов X.509.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...