Set-AuthenticodeSignature
Добавляет подпись Authenticode в скрипт PowerShell или другой файл.
Синтаксис
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-FilePath] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Set-AuthenticodeSignature
добавляет подпись Authenticode в любой файл, поддерживающий пакет интерфейса субъекта (SIP).
В файле скрипта PowerShell подпись представляет собой блок текста, указывающий конец инструкций, выполняемых в скрипте. Если при запуске командлета подпись в файле уже есть, эта подпись удаляется.
Примеры
Пример 1. Подписыв скрипт с помощью сертификата из локального хранилища сертификатов
Эти команды извлекают сертификат подписывания кода из поставщика сертификатов PowerShell и используют его для подписи скрипта PowerShell.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
$signingParameters = @{
FilePath = 'PsTestInternet2.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
Первая команда использует Get-ChildItem
командлет и поставщик сертификатов PowerShell для получения сертификатов в Cert:\CurrentUser\My
подкаталоге хранилища сертификатов. Диск Cert:
представляет собой диск, предоставляемый поставщиком сертификатов. Параметр CodeSigningCert , который поддерживается только поставщиком сертификатов, ограничивает сертификаты, полученные с помощью центра подписи кода. Команда сохраняет результат в переменной $cert
.
Вторая команда определяет переменную как хэш-файл с параметрами командлета для Set-AuthenticodeSignature
подписывания скриптаPSTestInternet2.ps1
.$signingParameters
Он использует параметр FilePath для указания имени скрипта, параметра Certificate, чтобы указать, что сертификат хранится в $cert
переменной, а параметр HashAlgorithm — для задания алгоритма хэширования значение SHA256.
Третья команда подписывает скрипт путем покрепки параметров, определенных в $signingParameters
.
Примечание.
Использование параметра CodeSigningCert только Get-ChildItem
возвращает сертификаты, имеющие центр подписи кода и содержащие закрытый ключ. Если закрытый ключ отсутствует, сертификаты нельзя использовать для подписывания.
Пример 2. Подписыв скрипт с помощью сертификата из PFX-файла
Эти команды используют Get-PfxCertificate
командлет для загрузки сертификата подписи кода. Затем используйте его для подписывания скрипта PowerShell.
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
$signingParameters = @{
FilePath = 'ServerProps.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
Первая команда использует Get-PfxCertificate
командлет для загрузки сертификата C:\Test\MySign.pfx в $cert
переменную.
Вторая команда определяет переменную как хэш-файл с параметрами командлета для Set-AuthenticodeSignature
подписывания скриптаServerProps.ps1
.$signingParameters
Он использует параметр FilePath для указания имени скрипта, параметра Certificate, чтобы указать, что сертификат хранится в $cert
переменной, а параметр HashAlgorithm — для задания алгоритма хэширования значение SHA256.
Третья команда подписывает скрипт путем покрепки параметров, определенных в $signingParameters
.
Если файл сертификата защищен паролем, PowerShell запрашивает пароль.
Пример 3. Добавление подписи, включающей корневой центр
Эта команда добавляет цифровую подпись, включающую корневой центр в цепочке доверия, и подпись стороннего сервера отметок времени.
$signingParameters = @{
FilePath = 'C:\scripts\Remodel.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
IncludeChain = 'All'
TimestampServer = 'http://timestamp.fabrikam.com/scripts/timstamper.dll'
}
Set-AuthenticodeSignature @signingParameters
Первая команда определяет $signingParameters
переменную как хэш-файл с параметрами командлета Set-AuthenticodeSignature
для подписывания скрипта. Он использует параметр FilePath для указания пути к скрипту, параметра Certificate, чтобы указать, что сертификат хранится в $cert
переменной, и параметр HashAlgorithm для задания алгоритма хэширования значение SHA256. Он использует параметр IncludeChain для включения всех подписей в цепочку доверия, включая корневой центр. Он также использует параметр TimeStampServer для добавления метки времени в сигнатуру. Это защищает скрипт от сбоя, если срок действия сертификата истек.
Вторая команда подписывает скрипт, различая параметры, определенные в $signingParameters
.
Параметры
-Certificate
Задает сертификат, который будет использоваться для подписания скрипта или файла. Введите переменную, в которой хранится объект, представляющий сертификат, или выражение, которое получает сертификат.
Чтобы найти сертификат, используйте или используйте Get-PfxCertificate
Get-ChildItem
командлет на диске сертификата Cert:
. Если сертификат недопустим или не имеет code-signing
центра, команда завершается ошибкой.
Тип: | X509Certificate2 |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Content
Этот параметр отображается в описании синтаксиса, так как он определен в базовом классе, Set-AuthenticodeSignature
производным от него. Однако поддержка этого параметра не реализована Set-AuthenticodeSignature
.
Тип: | Byte[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-FilePath
Указывает путь к подписываемому файлу.
Тип: | String[] |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Force
Позволяет командлету добавлять подпись в файл, доступный только для чтения. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-HashAlgorithm
Задает алгоритм хэширования, который использует Windows для расчета цифровой подписи для файла.
Значение по умолчанию - SHA1. Файлы, подписанные с использованием другого алгоритма хэширования, могут не распознаваться в других системах. Какие алгоритмы поддерживаются, зависят от версии операционной системы.
Список возможных значений см. в разделе HashAlgorithmName Struct.
Тип: | String |
Position: | Named |
Default value: | Null |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-IncludeChain
Определяет, какие сертификаты в цепочке доверия сертификатов включаются в цифровую подпись. NotRoot — это значение по умолчанию.
Допустимые значения:
- Подписыватель: включает только сертификат подписи.
- NotRoot: включает все сертификаты в цепочке сертификатов, за исключением корневого центра.
- Все: включает все сертификаты в цепочке сертификатов.
Тип: | String |
Position: | Named |
Default value: | NotRoot |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь к подписываемому файлу. В отличие от FilePath, значение параметра LiteralPath используется точно так же, как и типизированный параметр. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Тип: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SourcePathOrExtension
Этот параметр отображается в описании синтаксиса, так как он определен в базовом классе, Set-AuthenticodeSignature
производным от него. Однако поддержка этого параметра не реализована Set-AuthenticodeSignature
.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-TimestampServer
Добавляет к подписи отметку времени, использует заданный сервер отметок времени. Введите URL-адрес сервера отметок времени в виде строки.
Отметка времени представляет собой значение точного времени, когда сертификат был добавлен в файл. Отметка времени защищает скрипт от сбоев в случае истечения срока действия сертификата, поскольку пользователи и программы могут проверить, что сертификат действовал в момент подписания.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Можно передать строку, содержащую путь к файлу для этого командлета.
Выходные данные
Этот командлет возвращает объект Signature , представляющий заданное значение.
Связанные ссылки
PowerShell