2011-10-03 7 views
12

È possibile installare il certificato nell'archivio certificati utilizzando la procedura guidata in certmgr.msc (installazione con clic destro)? Qualcuno sa come rimuovere "in modo pulito" tutto il certificato usando la procedura guidata/Codice (pref.)/Script?Come rimuovere il certificato dallo Store in modo pulito

Desidero poter rimuovere tutto (che ho installato in precedenza) da LocalMachine e/o CurrentUser Store senza lasciare residui.

Grazie

risposta

12

si potrebbe provare le X509Store e releated classi del Framework .Net per eliminare un certificato dall'archivio certificati. Nell'esempio di codice seguente elimina un certificato dell'utente corrente Il mio negozio:

// 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(); 

BEGIN EDIT: Sulla base dei commenti nella sezione di commento Ho aggiornato la mia risposta con un esempio di codice che mostra come rimuovere un certificato e tutti i certificati della catena:

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); 

FINE EDIT

Speranza, questo aiuta.

+1

Intende assicurarsi che rimuoverà tutti i certificati dalla macchina tra cui thoese a catena? – daehaai

+0

ok ecco un'altra domanda in più. Quando si installa utilizzando la procedura guidata ha l'opzione "Archivia automaticamente il certificato in base al tipo". Come installereste cert nel negozio di corrosponding nel codice con questo? – daehaai

+0

@activebiz: No, la funzione Remove() non rimuove i certificati nella catena di certificati. Ho aggiornato la mia risposta con un esempio per mostrare come eliminare i certificati nella catena. – Hans

1

Puoi provare certmgr.exe. Il seguente comando rimuove un certificato con un cn di "commoncertname" dall'archivio personale \ certificati dell'utente locale.

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

Potete trovare ulteriori informazioni su Certmgr.exe qui: http://msdn.microsoft.com/en-us/library/windows/desktop/aa376553%28v=vs.85%29.aspx

UPDATE

Duh! Non posso credere di non aver provato questo! È possibile rimuovere i certificati con il seguente:

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

Vecchio thread, ma ho appena seguito il post collegato sotto utilizzando Win 7 e ha funzionato bene ... Utilizza la console di gestione.

  1. Start -> Esegui -> mmc.exe
  2. Fare clic su File -> "Aggiungi/Rimuovi snap-in"
  3. Selezionare Certificati, fare clic su Aggiungi
  4. Selezionare "Account del computer", fare clic su Avanti.
  5. Selezionare "Computer locale", fare clic su Fine
  6. Fare clic su OK, che dovrebbe portare di nuovo alla MMC
  7. Nel riquadro sinistro, espandere Certificati (computer locale)
  8. fare ciò che vuoi con i certificati elencati. ..

Fonte: http://windowssecrets.com/top-story/certificate-cleanup-for-most-personal-computers/

+2

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. –