Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Массовая установка сертификата организации на всех пользователей windows
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,734   Сказал «Спасибо»: 574 раз Поблагодарили: 2304 раз в 1805 постах
|
былина:
и сделали они в итоге self extracted 7z с автоустановкой... и разослали его по серверам, прописали в политики при входе, забэкапили на флешки и для надежности в base64 распечатку в сейф положили.. и стало всем ..хорошо... удаляй, запускай, работай...
если кто из форумчан узнал себя - привет) |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,654
Сказал(а) «Спасибо»: 614 раз Поблагодарили: 458 раз в 432 постах
|
Автор: Андрей *  может уже беспокоится, вдруг контейнер снесут из реестра\папки... Ну да, сценариев может быть множество - пользователь и сертификат может удалить и контейнер, прав Ему хватит. Но тупо, при каждом логине в УЗ импортировать *.pfx вообще не вариант; Автор: Андрей *  а скрипт не узнает... читать имя контейнера, с которым связан сертификат -> проверять, есть ли он в реестре\папке. Лучший вариант наверное будет такой: - перебираем все/ каждый контейнер;
- читаем из каждого сертификат;
- если нужного Нам сертификата в контейнерах нет, то производим импорт *.pfx;
- если нужного Нам сертификата в хранилище нет, то выполняем -absorb, либо просто им финалим.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,734   Сказал «Спасибо»: 574 раз Поблагодарили: 2304 раз в 1805 постах
|
Автор: nickm  Автор: Андрей *  может уже беспокоится, вдруг контейнер снесут из реестра\папки... Ну да, сценариев может быть множество - пользователь и сертификат может удалить и контейнер, прав Ему хватит. Но тупо, при каждом логине в УЗ импортировать *.pfx вообще не вариант; Автор: Андрей *  а скрипт не узнает... читать имя контейнера, с которым связан сертификат -> проверять, есть ли он в реестре\папке. Лучший вариант наверное будет такой: - перебираем все/ каждый контейнер;
- читаем из каждого сертификат;
- если нужного Нам сертификата в контейнерах нет, то производим импорт *.pfx;
- если нужного Нам сертификата в хранилище нет, то выполняем -absorb, либо просто им финалим.
да вот решение... |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,654
Сказал(а) «Спасибо»: 614 раз Поблагодарили: 458 раз в 432 постах
|
Автор: nickm  Лучший вариант наверное будет такой: - перебираем все/ каждый контейнер;
- читаем из каждого сертификат;
- если нужного Нам сертификата в контейнерах нет, то производим импорт *.pfx;
- если нужного Нам сертификата в хранилище нет, то выполняем -absorb, либо просто им финалим.
Что-то типа такого: Код:@echo off
SetLocal EnableExtensions EnableDelayedExpansion
::Укажем отпечаток сертификата для поиска
set "thumbprint=b19982a8d10f9f3265007e06f808e7c97fbf4b67"
::Сменим исполняемый каталог
pushd "%ProgramFiles%\Crypto Pro\CSP\"
::Переберём все доступные контейнеры и выполним проверку и импорт при необходимости
For /F "usebackq Tokens=1* Delims=:" %%a In (`csptest.exe -keyset -enum_cont -fqcn -verifyc ^| FindStr "\\" ^2^>nul`) Do (
call :CheckCertInCont "%%a"
)
::Здесь принимаем решение импортировать *.pfx или нет
if DEFINED CertExist (echo."Сертификат с указанным отпечатком в контейнерах присутствует, скорее всего *.pfx был импортирован ранее. Импорт *.pfx производиться не будет!") else (echo."Сертификат с указанным отпечатком в контейнерах отсутствует. Импорт *.pfx будет произведен!")
:: Чтобы не выполнять дополнительные проверки на привязанность сертификата к доступному контейнеру просто выполняем "автоустановку"
::csptest.exe -absorb -certs -autoprov
::Вернёмся в сохранённый каталог
popd
::Завершим работу сценария
goto :EOF
::Процедура проверки
:CheckCertInCont
::Попробуем найти отпечаток сертификата в доступных контейнерах
For /F "usebackq Tokens=1,2* Delims=:" %%a In (`certmgr.exe -list -cont "%~1" ^| FindStr %thumbprint% ^2^>nul`) Do (
set "CertExist=%%b"
)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.05.2025(UTC) Сообщений: 12 
|
Да, доделал проверку на наличие сертификата и на наличие закрытого контейнера
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.05.2025(UTC) Сообщений: 12 
|
и сделали они в итоге self extracted 7z с автоустановкой... и разослали его по серверам, прописали в политики при входе, забэкапили на флешки и для надежности в base64 распечатку в сейф положили.. и стало всем ..хорошо... удаляй, запускай, работай...
Да согласен, придётся 7z.exe делать, т.к политика на запуск PowerShell скриптов заблокирована по умолчанию либо
Install-Module -Name PS2EXE -Force Invoke-PS2EXE -InputFile "d:\1\3\3.ps1" -OutputFile "3.exe"
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,654
Сказал(а) «Спасибо»: 614 раз Поблагодарили: 458 раз в 432 постах
|
Автор: Николай1987  Да, доделал проверку на наличие сертификата и на наличие закрытого контейнера С сообществом "доделкой" не поделитесь? Автор: Николай1987  Да согласен, придётся 7z.exe делать, т.к политика на запуск PowerShell скриптов заблокирована по умолчанию Так внутри архива те же сценарии, не?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.05.2025(UTC) Сообщений: 12 
|
Вообщем чтобы запустить .ps1 нужно сначало запустить .bat с кодом cmd /k powershell -ExecutionPolicy Bypass -File "d:\1\3\3.ps1" тоесть в самораспаковывающем архиве 7zip будет два файла один .bat другой .ps1 тоесть скрипты powershell .ps1 по умолчанию отключен запуск в windows и с помощью скрипта .ps1 нельзя отключить проверку так как он же не запуститься Отредактировано пользователем 25 мая 2025 г. 18:01:04(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.05.2025(UTC) Сообщений: 12 
|
скинул Вам в личку, Вы получили? nickm
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.05.2016(UTC) Сообщений: 2,654
Сказал(а) «Спасибо»: 614 раз Поблагодарили: 458 раз в 432 постах
|
Автор: Николай1987  тоесть в самораспаковывающем архиве 7zip будет два файла один .bat другой .ps1 Можно и одним *.cmd отделаться, вариант предложен выше. Да и *.ps1 можно из *.cmd создать и выполнить. И да, "HasPrivateKey" у сертификата не означает, что контейнер существует в системе "здесь и сейчас", а лишь говорит о том, что сертификат когда-то связывали с контейнером, поэтому строить проверки на этом свойстве бессмысленно + при некоторых сценариях будет плодиться такая сущность в системе, как контейнеры. Лучше используйте выше предложенный вариант с перебором доступных пользователю контейнеров и вычиткой из него нужного сертификата.
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Массовая установка сертификата организации на всех пользователей windows
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close