4

(Я отправил это ранее суперпользователю)

Я хотел бы временно отключить все доверенные корневые сертификаты и задаться вопросом, есть ли более быстрый способ, чем пройти через каждый из них, щелкнуть правой кнопкой мыши Свойства и выбрать "Отключить все цели для этого сертификата" (а затем попытаться найти, где я остановился после того, как список в mmc прокручивается назад к началу)?

3 ответа3

3

Как упоминалось в @Grant, Powershell можно использовать для удаления (эффективного отключения) сертификатов из хранилища. Экспорт может быть выполнен до удаления, поэтому вы можете повторно импортировать их обратно в магазин.

Чтобы экспортировать и удалить из магазина:

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

Чтобы повторно импортировать их обратно в магазин:

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

Похоже, у Powershell нет возможности отключить сертификаты. Что удивительно, возможно, я скучал по ним. Но у него есть команды для импорта, экспорта и удаления.

Можно (и проверить это на виртуальной машине со снимками или что-то в случае, если первая ревизия не сработает) написать скрипт powershell для экспорта всех сертификатов, их удаления, приостановки, пока вы делаете то, что вы делаете, затем импорта их снова.

Это не дает таких же результатов, как их отключение, но, поскольку вы не говорите, зачем вы это делаете, это может быть достаточно близко для ваших целей.

Я считаю, что отключение сертификата означает то же самое, что пометить его как недоверенное. Если это так, вы можете выбрать их все и перетащить в хранилище ненадежных сертификатов. Но проверьте, что там уже есть - вы не захотите возвращать существующие ненадежные обратно, когда закончите.

-1

Вне сценария PowerShell, на который есть ссылка выше, нет быстрого способа пакетной обработки, просто способ, которым вы делаете это вручную.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .