Как получить CN сертификатов в конкретном магазине? - PullRequest
6 голосов
/ 03 октября 2011

я хочу получить CN сертификатов, хранящихся в МОЕМ магазине , как я хочу проверить , если сертификат существуетили нет в этом магазине.

Я не знаю, какой метод следует использовать для выполнения этой задачи.

Я пытался использовать приведенный ниже код, но он не работает

X509Certificate2Collection cers =  store.Certificates.Find(X509FindType.FindBySubjectName,"Root_Certificate",false);

if(cers.Count>0)
{

//certificate present

}

else
{

//certificate not present

}

Дает ли subjectName CN ?

, есть ли другой способ?

Подскажите, пожалуйста, как проверить, присутствует ли конкретный сертификат или нетхочу сделать это с помощью CN.

1 Ответ

12 голосов
/ 03 октября 2011

Вы можете использовать функцию store.Certificates.Find(X509FindType.FindBySubjectName, "SubjectName", false) для поиска сертификата по имени субъекта.НЕ включайте «CN =» в имя субъекта.

Для более точного поиска вы можете использовать отпечаток пальца для поиска вашего сертификата.Следующий пример кода демонстрирует это:

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.IncludeArchived);

foreach (var c in store.Certificates)
{
  Console.Out.WriteLine(c.Thumbprint);
  Console.Out.WriteLine(c.Subject);
}

// Find by thumbprint
X509Certificate2Collection col =
store.Certificates.Find(X509FindType.FindByThumbprint, "669502F7273C447A62550D41CD856665FBF23E48", false);

store.Close();

Я добавил цикл foreach в пример кода, чтобы перебрать все сертификаты в выбранном хранилище.Ваш сертификат должен быть указан там.Если нет, вы, вероятно, используете не тот магазин.Обратите внимание, что существует хранилище My для Machine и Current User .Поэтому обязательно откройте нужное хранилище.

Чтобы получить отпечаток вашего сертификата, выполните следующие действия:

  1. Откройте certmgr.msc.
  2. Дважды нажмите наваш сертификат.
  3. Перейдите на вкладку сведений.
  4. Под отпечатком вы найдете отпечаток вашего сертификата.

Надеюсь, это поможет.

...