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 "http://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 3.0 по умолчанию используется SHA256, который является алгоритмом хэширования Windows по умолчанию. Для PowerShell 2.0 по умолчанию используется 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-адрес сервера отметок времени в виде строки.
Отметка времени представляет собой значение точного времени, когда сертификат был добавлен в файл. Отметка времени защищает скрипт от сбоев в случае истечения срока действия сертификата, поскольку пользователи и программы могут проверить, что сертификат действовал в момент подписания.
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 |
Входные данные
Можно передать по конвейеру строку, содержащую путь к файлу, в Set-AuthenticodeSignature
.
Выходные данные
Примечания
Этот командлет доступен только на платформах Windows.