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

Вы можете установить сертификат в хранилище сертификатов с помощью мастера в certmgr.msc (установка правой кнопкой мыши)?Кто-нибудь знает, как «чисто» удалить все сертификаты, используя мастер / код (преф.) / Скрипт?

Я хочу иметь возможность удалить все (что я установил ранее) из LocalMachine и/ или Магазин CurrentUser без остатка.

Спасибо

Ответы [ 3 ]

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

Вы можете попробовать X509Store и освобожденные классы в .Net Framework, чтобы удалить сертификат из хранилища сертификатов. В следующем примере кода удаляется сертификат из Моего магазина текущего пользователя:

// Use other store locations if your certificate is not in the current user store.
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite | OpenFlags.IncludeArchived);

// You could also use a more specific find type such as X509FindType.FindByThumbprint
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, "yoursubjectname", false);

foreach (var cert in col)
{
  Console.Out.WriteLine(cert.SubjectName.Name);

  // Remove the certificate
  store.Remove(cert);        
}
store.Close();

НАЧАТЬ РЕДАКТИРОВАТЬ: На основании комментариев в разделе комментариев я обновил свой ответ с примером кода, показывающим, как удалить сертификат и все сертификаты в цепочке:

  X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, "yoursubjectname", false);

  X509Chain ch = new X509Chain();
  ch.Build(col[0]);
  X509Certificate2Collection allCertsInChain = new X509Certificate2Collection();

  foreach (X509ChainElement el in ch.ChainElements)
  {
    allCertsInChain.Add(el.Certificate);
  }

  store.RemoveRange(allCertsInChain);

КОНЕЦ РЕДАКТИРОВАНИЯ

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

4 голосов
/ 23 июня 2014

Старая тема, но я только что следовал по ссылке ниже, используя Win 7, и она работала хорошо ... Использует Консоль управления.

  1. Пуск -> Выполнить -> mmc.exe
  2. Нажмите Файл -> «Добавить / Удалить оснастку»
  3. Выберите Сертификаты, нажмите Добавить
  4. Выберите «Учетная запись компьютера», нажмите Далее.
  5. Выберите «Локальный компьютер», нажмите «Готово»
  6. Нажмите «ОК», чтобы вернуться к MMC
  7. На левой панели разверните Сертификаты (локальный компьютер)
  8. Делайте что хотите с перечисленными сертификатами ...

Источник: http://windowssecrets.com/top-story/certificate-cleanup-for-most-personal-computers/

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

Вы можете попробовать certmgr.exe. Следующая команда удаляет сертификат с cn 'commoncertname' из хранилища личных \ сертификатов локального пользователя.

.\certmgr.exe -del -n commoncertname -c -s -r currentuser my

Вы можете найти больше информации о certmgr.exe здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/aa376553%28v=vs.85%29.aspx

UPDATE

Duh! Я не могу поверить, что я не пробовал это! Вы можете удалить сертификаты со следующими данными:

Get-ChildItem Cert:\CurrentUser\My | Where-Object {$_.Subject -eq 'CN=certCN'} | Remove-Item
...