...
Ниже приведён пример скрипта Power Shell для подписания файлов помещённых в заранее созданную папку через SignTool.
Скрипт автоматически перемещает файл C:\test.exe в папку C:\sign и подписывает его.
После чего, скрипт переходит в статус ожидания. Далее можно вручную переносить файлы в папку sign, скрипт автоматически их подпишет. Можно переносить и несколько файлов одновременно, скрипт подпишет их все по очереди. Главное, чтобы в названии файла не было пробелов.
Info |
---|
Обратите внимание, что путь к signtool может отличаться в зависимости от версии установленного Windows SDK (в примере ниже, этот путь - signtoolPath = "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe"). |
# Path and filter settings # Ensure the path exists # The script block called when files are created |
|
22621.0\x64\signtool.exe" |
9bc6207999c596a4bc198c0a6df92e8049d01e96 /v / |
fd SHA256 $filePath" # Delay to ensure file copy has completed # Check if the file is still being copied by monitoring the size while ($previousSize -ne $newSize) { Write-Host "Signing file '$filePath'" |
try { |
Write- |
Host "Failed to sign file '$filePath'. Error: $_" $sourceIdentifier = "FileCreated" # Unregister the event if it is already registered |
catch { # Create the FileSystemWatcher # Validate if the event is actually registered |
{ |
else |
{ Write-Host "Script is now monitoring $path." # Copy test.exe to the sign folder # Prevent the console from closing immediately |
Добавление Скрипта в Службы Windows
...
- Для установки NSSM, необходимо запустить PowerShell. Для этого, откроем поиск и наберём PowerShell ISE. Запустить его нужно от имени администратора.
- Создаём новый файл и запускаем команды для установки NSSM:
`Set-ExecutionPolicy Bypass -Scope Process -Force;
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install nssm - Создаём новый сценарий в PowerShell ISE, прописываем наш скрипт для подписания файлов (из раздела Создание скрипта для подписи документов) и сохраняем в удобном месте (в нашем примере, скрипт сохранён по пути C:\script.ps1)
- Далее, прописываем и запускаем команду для добавления нашего скрипта в службы Windows. В данном примере, служба будет называться "script".
$NSSMPath = (Get-Command "C:\ProgramData\chocolatey\bin\nssm.exe").Source
$NewServiceName = "script"
$PoShPath= (Get-Command powershell).Source
$PoShScriptPath = "C:\script.ps1"
$args = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $PoShScriptPath
& $NSSMPath install $NewServiceName $PoShPath $args
& $NSSMPath status $NewServiceNameStart-Service $NewServiceName
Get-Service $NewServiceName - Если необходимо удалить службу, можно в командной строке использовать команду sc delete “Имя Службы”
...
- Для начала, необходимо проверить, создалась ли наша служба. Для этого, в поиске прописываем и запускаем Службы.
- В списке служб, находим нашу (в данном примере, называется script). Кликаем по ней правой кнопкой мыши и переходим в Свойства.
- В свойствах переходим во вкладку Вход в систему и указываем имя и пароль пользователя, от имени которого будет запускаться служба. Применяем и перезагружаем компьютер.
- После настройки, службу необходимо перезапустить.
Подключение по SSH
Подписание файлов работает даже при переносе файлов в папку sign удалённо, через ssh.
Для подключения по ssh необходимо установить компонент OpenSSH Server на одну из клиентских машин (данный компонент доступен к установке при версии Windows 10 старше 1809).
- Переходим в меню Пуск - Настройки - Приложения.
- Зайти в раздел Дополнительные компоненты.
- Нажать Добавить компонент и ввести в поиске Сервер OpenSSH. Также убедитесь, что на обеих машинах установлен компонент Клиент OpenSSH.
- Для подключения к серверу OpenSSH, необходимо в командной строке ввести команду:Где username - это имя пользователя сервера, а IPaddress - это IP адрес сервера OpenSSH.
ssh username@IPaddress
Info Так как OpenSSH по умолчанию работает через порт 22, необходимо убедиться, что у клиента и у сервера есть разрешения на использование этого порта.
Итог
Если вы настроили кеширование PIN-кода и создали службу как указано в инструкции, то при подключенном Рутокене к машине, у вас будет подписываться указанный вами в скрипте файл до логина в учётную запись пользователя. Далее, служба будет ожидать следующие файлы для подписи в папке sign.