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