Esiste un modo per disabilitare rapidamente tutti i certificati radice attendibili in Windows 7?


5

(L'ho pubblicato prima su superutente)

Vorrei disabilitare temporaneamente tutti i certificati radice attendibili e chiedersi se esiste un modo più rapido rispetto a esaminarne uno solo, fare clic con il pulsante destro del mouse su Proprietà e selezionare "Disabilita tutti gli scopi per questo certificato" (e quindi provare a trovare dove lasciato fuori dopo che l'elenco in mmc scorre di nuovo verso l'alto)?


1
Ho il sospetto che ciò che probabilmente devi fare è cercare in Powershell una soluzione. I certificati sono presenti Cert:\LocalMachine\Root. Potrebbe esserci un modo per disabilitare i certificati.
Zoredache,

Ho pubblicato qui perché mi è stato detto che SF potrebbe essere migliore per la domanda.
zoli,

1
@zoli nel caso in cui qualcuno pensi che la tua domanda possa adattarsi meglio a un altro sito, la domanda originale dovrebbe essere migrata. La comunità lo farà spesso per impostazione predefinita per buone domande che si adattano chiaramente a un altro sito. Puoi anche contrassegnare una domanda per un moderatore e richiedere una migrazione.
Zoredache,

Risposte:


4

Proprio come menzionato da @Grant, Powershell può essere usato per rimuovere (disabilitando efficacemente) i certificati dal negozio. Un'esportazione può essere effettuata prima della rimozione in modo da poterli reimportare nel negozio.

Per esportare e rimuovere dallo store:

Add-Type -AssemblyName System.Security

$exportPath = 'c:\temp\certexport'

$certStore = New-Object System.Security.Cryptography.X509Certificates.X509Store -ArgumentList 'Root', 'LocalMachine'

$certStore.Open('ReadWrite')

foreach ($cert in $certStore.Certificates) {

    # Export cert to a .cer file.
    $certPath = Join-Path -Path $exportPath -ChildPath "$($cert.Thumbprint).cer"
    [System.IO.File]::WriteAllBytes($certPath, $cert.Export('Cert'))

    # Remove the cert from the store.
    $certStore.Remove($cert)

}
$certStore.Close()

Per reimportarli nel negozio:

Add-Type -AssemblyName System.Security

$exportPath = 'c:\temp\certexport'

$certStore = New-Object System.Security.Cryptography.X509Certificates.X509Store -ArgumentList 'Root', 'LocalMachine'

$certStore.Open('ReadWrite')

Get-ChildItem -Path $exportPath -Filter *.cer | ForEach-Object {

    $cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate($_.FullName)

    $certStore.Add($cert)
}
$certStore.Close()

+1 per aver effettivamente scritto la sceneggiatura a cui ho accennato.
Concedi

2

Powershell non sembra avere alcun modo di disabilitare i certificati. Il che è sorprendente, forse mi mancavano. Ma ha comandi per importarli, esportarli ed eliminarli.

Si potrebbe (e testarlo da una macchina virtuale con istantanee o qualcosa nel caso in cui la prima revisione non funzioni) scrivere uno script PowerShell per esportare tutti i certificati, eliminarli tutti, mettere in pausa mentre si fa tutto ciò che si sta facendo, quindi importare di nuovo loro.

Questo non dà gli stessi risultati che disabilitarli, ma poiché non dici perché lo stai facendo, potrebbe essere abbastanza vicino per i tuoi scopi.

Credo che disabilitare un certificato faccia la stessa cosa che contrassegnarlo come non attendibile. In tal caso potresti essere in grado di selezionarli tutti e trascinarli nell'archivio certificati non attendibile. Ma controlla cosa c'è già dentro: non vorrai spostare indietro quelli non attendibili quando hai finito.


1
Grazie! Lo scopo che volevo fare era testare il comportamento di alcuni codici quando si effettua una connessione SSL e non è in grado di verificare i certificati del server.
zoli,

2
@zoli Attenzione che alcune applicazioni si comportano diversamente per un certificato mancante rispetto a un certificato esplicitamente contrassegnato come non attendibile.
Concedi

-2

Al di fuori dello script di PowerShell sopra citato, non esiste un metodo batch rapido, ma solo il modo in cui lo si esegue manualmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.