Статус: Новичок
Группы: Участники
Зарегистрирован: 31.08.2015(UTC) Сообщений: 5 Сказал(а) «Спасибо»: 4 раз
|
Добрый день! Подскажите, пожалуйста, как удалить все истекшие сертификаты из реестра при помощи утилиты certmgr.exe Отредактировано пользователем 5 сентября 2018 г. 9:22:48(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Здравствуйте.
Пуск\Все программы\КРИПТО-ПРО\Сертификаты
Перейдите раздел: Личное\Сертификаты
Отсортируйте по дате истечения, выделите и удалите |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.08.2015(UTC) Сообщений: 5 Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей Писарев Здравствуйте.
Пуск\Все программы\КРИПТО-ПРО\Сертификаты
Перейдите раздел: Личное\Сертификаты
Отсортируйте по дате истечения, выделите и удалите Спасибо! Я это знаю... Мне нужно удалить истекшие сертификаты используя утилиту certmgr.exe из состава Крипто-Про. Нужно написать батник в котором будет строка вида certmgr.exe -delete Я не знаю, какие еще нужно указать параметры для удаления только всех истекших сертификатов.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 20.11.2014(UTC) Сообщений: 399
Сказал(а) «Спасибо»: 6 раз Поблагодарили: 14 раз в 11 постах
|
Автор: kaznachej Я не знаю, какие еще нужно указать параметры для удаления только всех истекших сертификатов. Это не от кого не скрывается, по ссылке много примеров: https://docs.microsoft.com/ru-ru/dotnet/framework/tools/certmgr-exe-certificate-manager-toolВот список доп значений:
certmgr.exe [-add | -del | -put] [options] [-s[-r registryLocation]] [sourceStorename] [-s[-r registryLocation]] [destinationStorename] Параметры: -add = Добавление сертификатов, списков CTL и CRL в хранилище сертификатов. -all = Добавляет все записи при использовании с параметром -add. Удаляет все записи при использовании с параметром -del. Отображает все записи при использовании без параметров -add и -del. Параметр -all не может быть использован с параметром -put. -c = Добавляет сертификаты при использовании с параметром -add. Удаляет сертификаты при использовании с параметром -del. Сохраняет сертификаты при использовании с параметром -put. Отображает сертификаты при использовании без параметра -add, -del или -put. -CRL = При использовании с параметром -add добавляет списки отзыва сертификатов (CRL). При использовании с параметром -del удаляет списки отзыва сертификатов (CRL). Сохраняет CRL при использовании с параметром -put. Отображает списки отзыва сертификатов при использовании без параметра -add, -del или -put. -CTL = При использовании с параметром -add добавляет списки доверия сертификатов (CTL). При использовании с параметром -del удаляет списки доверия сертификатов (CTLs). Сохраняет CTL при использовании с параметром -put. Отображает списки доверия сертификатов при использовании без параметра -add, -del или -put. -del = Удаление сертификатов, списков CTL и CRL из хранилища сертификатов. -e тип_шифрования = Указывает тип шифрования сертификата. Значение по умолчанию — X509_ASN_ENCODING. -f dwFlags = Задает флаг открытого хранилища. Это параметр dwFlags, передаваемый методу CertOpenStore. По умолчанию используется значение CERT_SYSTEM_STORE_CURRENT_USER. Этот параметр обрабатывается, только если задан параметр -y. -h[elp] = Отображает синтаксис команд и параметров программы. -n имя = Задает общее имя добавляемого, удаляемого или сохраняемого сертификата. Этот параметр может применяться только для сертификатов, его нельзя задавать для списков CTL и CRL. -put = Сохранение сертификатов X.509, списков CTL и CRL из хранилища сертификатов в файл. Файл сохранен в формате X.509. Чтобы сохранить файл в формате PKCS #7, можно использовать параметр -7 с параметром -put. За параметром /put должен следовать параметр -c, -CTL или -CRL. Параметр /all не может быть использован с параметром -put. -r расположение = Указывает расположение системного хранилища в реестре. Этот параметр обрабатывается, только если задан параметр -s. расположение должно быть одним из следующих:currentUser означает, что хранилище сертификатов находится в разделе HKEY_CURRENT_USER. Это значение по умолчанию. localMachine означает, что хранилище сертификатов находится в разделе HKEY_LOCAL_MACHINE. -s = Означает, что хранилище сертификатов является системным. Если этот параметр не задан, хранилище считается StoreFile. -sha1 Хэш sha1 = Задает хэш SHA1 добавляемого, удаляемого или сохраняемого сертификата. -v = Включает отображение подробных сведений о сертификатах, списках CTL, CRL. Этот параметр несовместим с параметрами -add, -del или -put. -y поставщик = Задает имя поставщика хранилища. -7 = Сохраняет итоговое хранилище как объект PKCS #7.
|
1 пользователь поблагодарил Винтик за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.08.2015(UTC) Сообщений: 5 Сказал(а) «Спасибо»: 4 раз
|
Автор: Винтик Спасибо! Но это не та утилитка. Те параметры, которые Вы указали относятся к диспетчеру сертификатов, который устанавливается автоматически вместе с Visual Studio. Меня же интересует утилита, которая ставится вместе с КриптоПро (обычно по пути c:\Program Files\Crypto Pro\CSP\certmgr.exe) Я не знаю как задать условия фильтрации для удаления всех сертификатов, которые не действуют на текущую дату, или такое такое в ней нельзя сделать... Как я понял её нужно запускать с параметром -delete и указывать еще дополнительные значения для этого ключа. Вот список доп. значений:
c:\Program Files\Crypto Pro\CSP>certmgr -delete -help Certmgr 1.0 (c) "CryptoPro", 2007-2010. program for managing certificates, CRLs and stores
using certmgr: certmgr [command] [options]: options for -delete command: -store u<name> User certificate store name (default: uMy) -store m<name> System certificate store name -dn <CN=..O=..> Certificate DName for filtering -thumbprint hash Certificate thumbprint for filtering -cert Delete certificate (default) -provname <name> Provider name -provtype <type> Provider type -crl Delete CRL -cont <name> Name of container for delete (\\.\Reader\name) -all Use all certificates (CRLs) -silent Use only one certificate (CRL), return error if found more -keyid <ID> Delete CRL by authority key identifier
Как с помощью этих доп. значений указать, чтоб сразу удалились только все сертификаты, которые не действуют на текущую дату, я и не могу сообразить... Простите мою тупость...
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,357 Сказал «Спасибо»: 550 раз Поблагодарили: 2217 раз в 1731 постах
|
Здравствуйте.
В ней нет этого функционала - фильтрации по дате. Можно найти сертификаты поиском по DN или отпечатку. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.08.2015(UTC) Сообщений: 5 Сказал(а) «Спасибо»: 4 раз
|
Автор: Андрей Писарев Здравствуйте.
В ней нет этого функционала - фильтрации по дате. Можно найти сертификаты поиском по DN или отпечатку. Спасибо! Очень жаль... Может кто-нибудь тогда помочь, как автоматизировать процедуру удаления всех истекших сертификатов через батник, с указанием примера или утилиты...
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Вообще не так сложно наверно написать решение с нужным функционалом, если ориентироваться на дату окончания сертификата (но если ориентироваться по сроку окончания использования закрытого ключа, то все сложнее). Вижу как минимум 3 пути: 1) как-нибудь экспортировать список сертификатов с датами и отпечатками в текстовый файл, разбирать текстовый файл батником и вызывать удаление сертификата той самой утилитой по отпечаткуу; 2) батником запускать cscript со сценарием VBS/JS, в сценарии выбирать свойства сертификатов (через какой-то объект или из текстового файла) и вызывать ту самую утилиту по хэшу; 3) написать свою консольную утилиту перечисляющую сертификаты в хранилище (хранилищах), определяющую истекшие даты и вызывающую функцию удаления сертификата из хранилища. Это самое простое и наиболее целостное решение. Как будет время попробую реализовать хотя бы для системных хранилищ. Параметры предположительно: название хранилища, признак хранилище компьютера или пользователя, дата. С другой стороны, удалять только истекшие сертификаты автоматически не совсем правильно:
1) если остаются доступны контейнеры (на токенах, например), то они скорее всего поставятся обратно как будто и не удаляли; 2) контейнеры положено безвозвратно удалять в течении 10 дней после истечения срока сертификата с составлением акта/расписки и регистрацией в журнале. То есть либо надо включать в утилиту еще и удаление контейнера с составлением акта либо будет нарушение порядка обращения с контейнерами либо с какой-то вероятностью истекшие сертификаты "приплывут" обратно.
3) также остается открытый вопрос про удаление старых сертификатов УЦ с зарубежными алгортимами. Некоторые из таких сертификатов использовались для построения цепочек к сертификатам для подписи драйверов, их удалять крайне не рекомендуется, так как можно нарушить работоспособность компьютера. Истечение срока сертификата в данном случае не мешает проверке подписи, так как в подписи указана метка времени. Сама Майкрософт на этом в свое время споткнулась - выпустила обновление, удаляющее старые корневые сертификаты и компьютеры посыпались из-за недоверенных драйверов. Обновление отозвали, потом выпустили еще раз и снова отозвали. Только с третьей попытки, корректно определились что удалять. Это еще один довод в пользу очистки сертификатов УЦ только администратором вручную.
|
1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 31.08.2015(UTC) Сообщений: 5 Сказал(а) «Спасибо»: 4 раз
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.06.2024(UTC) Сообщений: 1
|
специально зарегистрировался чтобы написать ответ. Ниже скрипт на powershell, который удалит все сертификаты, просроченные более года назад, и сохранит лог действий в c:\tmp\expired_certs_log\Имяпользователя\дата.txt:
# Получить текущую дату и время в нужном формате $currentDate = Get-Date $dateString = $currentDate.ToString("yyyy-MM-dd_HH-mm-ss")
# Получить имя текущего пользователя $username = $env:USERNAME
# Определить путь для хранения журнала $logDir = "C:\tmp\expired_certs_log\$username" $logFile = "$logDir\$dateString.txt"
# Создать директорию, если она не существует if (-not (Test-Path -Path $logDir)) { New-Item -ItemType Directory -Path $logDir }
# Поиск всех сертификатов в хранилище текущего пользователя, у которых истек срок действия более года назад $expiredCerts = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.NotAfter -lt $currentDate.AddYears(-1) }
# Вывод списка этих сертификатов в текстовый файл $expiredCerts | Select-Object -Property Subject, NotAfter | Format-Table -AutoSize | Out-File -FilePath $logFile
# Удаление этих сертификатов foreach ($cert in $expiredCerts) { Remove-Item -Path $cert.PSPath }
# Сообщение о завершении Write-Output "Certs deleted. See $logFile."
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close