Запрашивать у пользователя пароль при получении сертификата X509 от X509Store? - PullRequest
1 голос
/ 31 июля 2009

У меня есть форма C # (запущенная на клиентском компьютере), которая собирает все пользовательские сертификаты X509 из хранилища, представляет их пользователю, чтобы они могли выбрать тот, который они хотят использовать. Затем я передаю сертификат веб-службе для выполнения какой-либо работы. Это все прекрасно работает! Проблема в том, что пользователю никогда не предлагается пароль X509Certificate? Я не могу найти способ «проверить пароль» после получения сертификата X509 из магазина. Я также подумал об использовании конструктора X509Certificate, которому нужен путь и пароль, но я не вижу способа получить путь к файлу и имя из сертификата X509, который я взял из магазина? Безопасно ли просто взять сертификат из магазина и не спрашивать пароль пользователя?

Вот как я хватаю из магазина:

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
for (int i = 0; i < store.Certificates.Count; i++) 
{
    X509Certificate c = store.Certificates[i];
    ...//add to GUI for user to pick here....
}

Спасибо за любую помощь, Стив

Ответы [ 2 ]

0 голосов
/ 31 июля 2009

зависит от того, защищен ли секретный ключ сертификата паролем или нет. Если вы принимаете такой сертификат в магазине, Windows предложит вам ввести его.

0 голосов
/ 31 июля 2009

Если вы решите использовать сертификат с криптографического устройства, такого как eToken или SmartCard, вам будет автоматически предложено ввести пароль (пароль для устройства, а не сертификат). В других случаях я не думаю, что вы должны заботиться об этом. Вы можете легко получить доступ к локальному хранилищу без каких-либо паролей в Windows, поэтому зачем защищать их в приложении.

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