Agrega una firma Authenticode a un script u otro archivo de Windows PowerShell.

Sintaxis

Set-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

Descripción

El cmdlet Set-AuthenticodeSignature agrega una firma Authenticode a cualquier archivo que admita el paquete SIP (Subject Interface Package).

En un archivo de comandos de Windows PowerShell, la firma adopta la forma de un bloque de texto que indica el final de las instrucciones que se ejecutan en el script. Si hay una firma en el archivo al ejecutar este cmdlet, dicha firma se quitará.

Parámetros

-Certificate <X509Certificate2>

Especifica el certificado que se usará para firmar el script o el archivo. Indique la variable que almacena un objeto que representa el certificado o una expresión que obtiene el certificado.

Para buscar un certificado, utilice Get-PfxCertificate o utilice el cmdlet Get-ChildItem en la unidad de certificados (Cert:). Si el certificado no es válido o no tiene la autoridad de firma de código, se producirá un error al ejecutar el comando.

¿Requerido?

true

¿Posición?

2

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-FilePath <string[]>

Especifica la ruta de acceso a un archivo que se va a firmar.

¿Requerido?

true

¿Posición?

1

Valor predeterminado

¿Aceptar canalización?

true (ByValue, ByPropertyName)

¿Aceptar caracteres comodín?

false

-Force

Permite al cmdlet anexar una firma a un archivo de solo lectura. Incluso si se usa el parámetro Force, el cmdlet no puede invalidar las restricciones de seguridad.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-HashAlgorithm <string>

Especifica el algoritmo hash que Windows utiliza para calcular la firma digital del archivo. El valor predeterminado es SHA1, que es el algoritmo hash predeterminado de Windows.

Los archivos firmados con un algoritmo hash diferente podrían no reconocerse en otros sistemas.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

SHA1

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-IncludeChain <string>

Determina qué certificados de la cadena de confianza de certificados están incluidos en la firma digital. La configuración predeterminada es "NotRoot".

Los valores válidos son:

-- Signer: incluye únicamente el certificado del firmante.

-- NotRoot: incluye todos los certificados de la cadena de certificados, excepto los correspondientes a la entidad de certificación raíz.

-- All: incluye todos los certificados de la cadena de certificados.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-TimestampServer <string>

Utiliza el servidor de marca de tiempo especificado para agregar una marca de tiempo a la firma. Escriba la dirección URL del servidor de marca de tiempo como una cadena.

La marca de tiempo representa el momento exacto en que se agregó el certificado al archivo. Una marca de tiempo evita un error en el script si el certificado expira, porque los usuarios y los programas pueden comprobar que el certificado era válido en el momento de producirse la firma.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Confirm

Solicita confirmación antes de ejecutar el comando.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-WhatIf

Describe lo que ocurriría si se ejecutara el comando sin ejecutarlo realmente.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

System.String

Se puede canalizar a Set-AuthenticodeSignature una cadena que contenga la ruta de acceso a un archivo.

Salidas

System.Management.Automation.Signature

Ejemplo 1

C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert

C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert

Descripción
-----------
Estos comandos recuperan un certificado de firma de código del proveedor de certificados de Windows PowerShell y lo usan para firmar un script de Windows PowerShell.

El primer comando usa el cmdlet Get-ChildItem y el proveedor de certificados de Windows PowerShell para obtener los certificados incluidos en el subdirectorio Cert:\CurrentUser\My del almacén de certificados. (La unidad Cert: es la unidad expuesta por el proveedor de certificados). El parámetro CodeSigningCert, que es admitido solamente por el proveedor de certificados, limita los certificados recuperados a aquellos con autoridad de firma de código. El comando almacena el resultado en la variable $cert.

El segundo comando utiliza el cmdlet Set-AuthenticodeSignature para firmar el script PSTestInternet2.ps1. Usa el parámetro FilePath para especificar el nombre del script y el parámetro Certificate para indicar que el certificado se almacena en la variable $cert.






Ejemplo 2

C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx 

C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert

Descripción
-----------
Estos comandos utilizan el cmdlet Get-PfxCertificate para buscar un certificado de firma de código. A continuación, lo utilizan para firmar un script de Windows PowerShell. 

El primer comando usa el cmdlet Get-PfxCertificate para buscar el certificado C:\Test\MySign.pfx y almacenarlo en la variable $cert.

El segundo comando usa Set-AuthenticodeSignature para firmar el script. El parámetro FilePath de Set-AuthenticodeSignature especifica la ruta de acceso al archivo de script que se va a firmar, mientras que el parámetro Cert pasa la variable $cert que contiene el certificado a Set-AuthenticodeSignature.

Si el archivo de certificado está protegido con contraseña, Windows PowerShell le pedirá la contraseña.






Ejemplo 3

C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll"

Descripción
-----------
Este comando agrega una firma digital que incluye la entidad emisora de certificados raíz de la cadena de confianza y está firmado por un servidor de marca de tiempo de otro fabricante. 

El comando usa el parámetro FilePath para especificar el script que se va a firmar y el parámetro Certificate para indicar el certificado que se guarda en la variable $cert. Utiliza el parámetro IncludeChain para incluir todas las firmas en la cadena de confianza (incluida la entidad de certificación raíz). También utiliza el parámetro TimeStampServer para agregar una marca de tiempo a la firma. Esto evitará un error en el script cuando el certificado expire.






Vea también




Tabla de contenido