Вы можете использовать функцию 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 .Поэтому обязательно откройте нужное хранилище.
Чтобы получить отпечаток вашего сертификата, выполните следующие действия:
- Откройте certmgr.msc.
- Дважды нажмите наваш сертификат.
- Перейдите на вкладку сведений.
- Под отпечатком вы найдете отпечаток вашего сертификата.
Надеюсь, это поможет.