Existe uma maneira de desabilitar rapidamente todos os certificados raiz confiáveis no Windows 7?

4

(Eu já postei isso antes para o superusuário)

Gostaria de desabilitar temporariamente todos os certificados raiz confiáveis e imaginar se há uma maneira mais rápida do que percorrer cada um deles, clique com o botão direito do mouse em Propriedades e selecione "Desativar todos os propósitos deste certificado" (e tente encontrar onde parei depois que a lista em mmc rola de volta ao topo)?

    
por zoli 30.04.2014 / 23:53

3 respostas

3

Assim como @Grant mencionou, o Powershell pode ser usado para remover (efetivamente desabilitar) os certificados da loja. Uma exportação pode ser feita antes da remoção para que você possa importá-los novamente para a loja.

Para exportar & remover da loja:

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

Para reimportá-los de volta à loja:

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()
    
por 02.05.2014 / 06:49
2

O Powershell não parece ter qualquer forma de desativar os certificados. O que é meio surpreendente, talvez eu tenha sentido falta deles. Mas ele tem comandos para importar, exportar e excluí-los.

Alguém poderia (e testar isso a partir de uma máquina virtual com instantâneos ou algo no caso da primeira revisão não funcionar) escrever um script PowerShell para exportar todos os certs, deletar todos eles, fazer uma pausa enquanto você faz o que estiver fazendo em seguida, importe-os novamente.

Isso não dá os mesmos resultados que desativá-los, mas como você não diz por que está fazendo isso, ele pode estar perto o suficiente para seus objetivos.

Acredito que desabilitar um certificado faz a mesma coisa que marcá-lo como não confiável. Se esse for o caso, você poderá selecionar todos e arrastá-los para o repositório de certificados não confiáveis. Mas verifique o que já está lá - você não gostaria de mover nenhum não confiável existente quando terminar.

    
por 01.05.2014 / 05:27
-1

Fora do script do PowerShell mencionado acima, não há uma maneira rápida de fazer o lote, exatamente da maneira como você o faz manualmente.

    
por 01.05.2014 / 00:19