Está en la página 1de 6

TEMA

about_signing
DESCRIPCIN BREVE
Explica cmo firmar los scripts de modo que cumplan las directivas de
ejecucin de Windows PowerShell.
DESCRIPCIN DETALLADA
La directiva de ejecucin Restricted no permite la ejecucin de ningn script.
Las directivas de ejecucin AllSigned y RemoteSigned evitan que
Windows PowerShell ejecute los scripts sin firma digital.
En este tema se explica cmo ejecutar los scripts no firmados,
incluso si la directiva de ejecucin es RemoteSigned, y cmo
firmar los scripts para uso propio.
Para obtener ms informacin sobre las directivas de ejecucin de
Windows PowerShell, vea about_Execution_Policy.
PERMITIR LA EJECUCIN DE SCRIPTS FIRMADOS
------------------------------Cuando se inicia por primera vez Windows PowerShell en un equipo,
es probable que est vigente la directiva de ejecucin
(predeterminada) Restricted.
La directiva Restricted no permite la ejecucin de ningn script.
Para obtener la directiva de ejecucin vigente en el equipo, escriba:
get-executionpolicy
Para poder ejecutar los scripts no firmados que escriba en el
equipo local y los scripts firmados de otros usuarios, use el comando
siguiente para cambiar la directiva de ejecucin en el equipo a
RemoteSigned:
set-executionpolicy remotesigned
Para obtener ms informacin, vea Set-ExecutionPolicy.
EJECUTAR SCRIPTS NO FIRMADOS (DIRECTIVA DE EJECUCIN REMOTESIGNED)
-------------------------------------------------------Si la directiva de ejecucin de Windows PowerShell es RemoteSigned,
Windows PowerShell no ejecutar los scripts no firmados que se descarguen
desde Internet ni tampoco los scripts no firmados que se reciban a travs
de programas de correo electrnico y mensajera instantnea.
Si intenta ejecutar un script descargado, Windows PowerShell
mostrar el siguiente mensaje de error:
No se puede cargar el archivo <nombre del archivo>. El archivo
<nombre del archivo> no est firmado digitalmente. El script
no se ejecutar en el sistema. Vea "Get-Help about_signing"
para obtener ms informacin.
Antes de ejecutar el script, revise el cdigo para asegurarse de
que es de confianza.
Los scripts tienen el mismo efecto que cualquier programa ejecutable.

Para ejecutar un script sin firma.


1. Guarde el
2. Haga clic
busque el
3. Haga clic
de script
4. Haga clic

archivo de script en el equipo.


en Inicio, haga clic en Mi PC y, a continuacin,
archivo de script guardado.
con el botn secundario del mouse en el archivo
y, a continuacin, haga clic en Propiedades.
en Desbloquear.

Si un script descargado desde Internet est firmado digitalmente


pero su editor an no est establecido como editor de confianza
en el sistema, Windows PowerShell mostrar el siguiente mensaje:
Desea ejecutar el software de este editor que no es de
confianza? El archivo <nombre del archivo> est publicado por
CN=<nombre del editor>. Este editor no es de confianza en el
sistema. Ejecute nicamente los scripts de los editores de confianza.
[O] No ejecutar nunca [N] No ejecutar [U] Ejecutar una vez
[E] Ejecutar siempre [?] Ayuda (la opcin predeterminada es "N"):
Si confa en el editor, seleccione "Ejecutar una vez" o "Ejecutar
siempre". Si no confa en el editor, seleccione "No ejecutar nunca" o "No
ejecutar". Si selecciona "No ejecutar nunca" o "Ejecutar siempre",
Windows PowerShell no se lo volver a preguntar para este editor.
MTODOS PARA FIRMAR SCRIPTS
-------------------------Puede firmar los scripts que escriba as como los que obtenga de otros
orgenes. Antes de firmar un script, examine cada comando para
comprobar si su ejecucin es segura.
Para obtener los procedimientos recomendados referentes a la
firma de cdigo, vea el correspondiente tema en
http://go.microsoft.com/fwlink/?LinkId=119096 (puede estar en ingls).
Para obtener ms informacin sobre cmo firmar un archivo de
script, vea Set-AuthenticodeSignature.
Para agregar una firma digital a un script, debe firmarlo con un
certificado de firma de cdigo. Hay dos tipos de certificados que
se pueden usar para firmar un script:
-- Certificados creados por una entidad de certificacin:
Previo pago de una cuota, una entidad de certificacin pblica
comprueba su identidad y le otorga un certificado de firma de cdigo.
Si adquiere el certificado de una entidad de certificacin acreditada,
podr compartir el script con los usuarios de otros equipos en los que
se ejecute Windows, ya que dichos equipos confan en la entidad de
certificacin.
-- Certificados creados por el usuario:
Puede crear un certificado autofirmado para el que su
equipo es la autoridad que crea el certificado.
Este certificado es gratuito y le permite escribir, firmar
y ejecutar scripts en su equipo. Sin embargo, un script

firmado por un certificado autofirmado no se ejecutar en otros


equipos.
Normalmente, un certificado autofirmado se usa nicamente para
firmar los scripts que se escriben para uso propio y los scripts
que se obtienen de otros orgenes tras comprobar que son seguros.
No se presta para los scripts que se van a compartir, incluso
dentro de una empresa.
Si crea un certificado autofirmado, asegrese de habilitar la
proteccin de clave privada segura en el certificado. Esto evita que
programas malintencionados le suplanten para firmar scripts. Las
instrucciones se incluyen al final de este tema.
CREAR UN CERTIFICADO AUTOFIRMADO
-------------------------------Para crear un certificado autofirmado, use la herramienta Creacin de
certificados (MakeCert.exe). Esta herramienta va incluida en
Microsoft .NET Framework SDK (versiones 1.1 y posteriores) y en
Microsoft Windows SDK.
Para obtener ms informacin sobre la sintaxis y la descripcin de los
parmetros de la herramienta MakeCert.exe, vea "Herramienta Creacin de
certificados (MakeCert.exe)" en MSDN (Microsoft Developer Network)
Library, en http://go.microsoft.com/fwlink/? LinkId=119097.
Para usar la herramienta MakeCert.exe a fin de crear un
certificado, ejecute los comandos siguientes en una ventana del
smbolo del sistema del SDK.
Nota: el primer comando crea una entidad de certificacin local
para el equipo. El segundo comando genera un certificado personal
de la entidad de certificacin.
Nota: puede copiar o escribir los comandos tal y como aparecen.
No es necesario realizar ninguna sustitucin, aunque puede
cambiar el nombre del certificado.
makecert -n "CN=Entidad de certificacin raz local de PowerShell" -a sh
a1 `
-eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer `
-ss Root -sr localMachine
makecert -pe -n "CN=Usuario de PowerShell" -ss MY -a sha1 `
-eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
La herramienta MakeCert.exe le pedir una contrasea de clave
privada. La contrasea garantiza que nadie puede utilizar ni
obtener acceso al certificado sin su consentimiento. Cree y
escriba una contrasea que pueda recordar. Utilizar esta
contrasea ms adelante para recuperar el certificado.
Para comprobar que se gener correctamente el certificado, use el
comando siguiente para obtener el certificado en el almacn de
certificados del equipo. (No encontrar un archivo de certificado
en el directorio del sistema de archivos.)
En el smbolo del sistema de Windows PowerShell, escriba:

get-childitem cert:\CurrentUser\my -codesigning


Este comando usa el proveedor de certificados de Windows
PowerShell para mostrar informacin sobre el certificado.
Si se cre el certificado, el resultado mostrar la huella digital que
identifica el certificado de manera similar a lo que figura a continuacin:
Directorio: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Huella digital
Asunto
---------------4D4917CB140714BA5B81B96E0B18AAF2C4564FDF CN=Usuario de PowerShell ]
FIRMAR UN SCRIPT
------------Despus de crear un certificado autofirmado, podr firmar
scripts. Si usa la directiva de ejecucin AllSigned, al firmar un
script podr ejecutarlo en el equipo.
El siguiente script de ejemplo, Agregar-Firma.ps1, firma un script. No
obstante, si usa la directiva de ejecucin AllSigned, deber firmar
el script Agregar-Firma.ps1 antes de ejecutarlo.
Para usar este script, copie el siguiente texto en un archivo de
texto y asgnele el nombre Agregar-Firma.ps1.
Nota: asegrese de que el nombre del archivo de script no tenga la
extensin .txt. Si el editor de texto anexa ".txt", escriba
el nombre de archivo entre comillas: "agregar-firma.ps1".
## agregar-firma.ps1
## Firma un archivo
param([string] $file=$(throw "Especifique un nombre de archivo."))
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature $file $cert
Para firmar el archivo de script Agregar-Firma.ps1, escriba los
siguientes comandos en el smbolo del sistema de Windows PowerShell:
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature agregar-firma.ps1 $cert
Una vez firmado el script, puede ejecutarlo en el equipo local.
Sin embargo, el script no se ejecutar en equipos en los que la
directiva de ejecucin de Windows PowerShell requiera una firma
digital de una entidad de confianza. Si intenta ejecutarlo, Windows
PowerShell mostrar el siguiente mensaje de error:
No se puede cargar el archivo C:\remote_file.ps1. No se puede
comprobar la firma del certificado.
En lnea:1 carcter:15

+ .\ remote_file.ps1 <<<<
Si Windows PowerShell muestra este mensaje al ejecutar un script
de otro autor, trate el archivo como cualquier otro script no
firmado. Revise el cdigo para determinar si puede confiar en el
script.
HABILITAR LA PROTECCIN DE CLAVE PRIVADA SEGURA PARA UN CERTIFICADO
--------------------------------------------------------Si tiene un certificado privado en el equipo, programas
malintencionados podran suplantarle para firmar scripts, lo que
autorizara a Windows PowerShell a ejecutar dichos scripts.
Para evitar la firma automatizada en su nombre, use el
Administrador de certificados (Certmgr.exe) para exportar su
certificado de firma a un archivo .pfx. El Administrador de
certificados va incluido en Microsoft .NET Framework SDK,
Microsoft Windows SDK as como en Internet Explorer 5.0 y versiones
posteriores.
Para exportar el certificado:
1. Inicie el Administrador de certificados.
2. Seleccione el certificado emitido por la Entidad de
certificacin raz local de PowerShell.
3. Haga clic en Exportar para iniciar el Asistente para
exportacin de certificados.
4. Seleccione "Exportar la clave privada" y, a continuacin,
haga clic en Siguiente.
5. Seleccione "Permitir proteccin segura".
6. Escriba una contrasea y, a continuacin, vuelva a
escribirla para confirmarla.
7. Escriba un nombre de archivo con la extensin .pfx.
8. Haga clic en Finalizar.
Para volver a importar el certificado:
1. Inicie el Administrador de certificados.
2. Haga clic en Importar para iniciar el Asistente para
importacin de certificados.
3. Vaya a la ubicacin del archivo .pfx que cre en el proceso de
exportacin.
4. En la pgina Contrasea, seleccione "Habilitar la proteccin de
clave privada de alta seguridad" y, a continuacin, escriba la
contrasea que asign en el proceso de exportacin.
5. Seleccione el almacn de certificados Personal.

6. Haga clic en Finalizar.

EVITAR LA EXPIRACIN DE LA FIRMA


----------------------------------La firma digital en un script es vlida hasta que expire el
certificado de firma o mientras un servidor de marca de tiempo pueda
comprobar que el script se firm durante el perodo de validez del
certificado de firma.
Dado que la mayora de los certificados de firma son vlidos
solo durante un ao, el uso de un servidor de marca de tiempo
garantiza que se puede usar el script durante varios aos.
VEA TAMBIN
about_Execution_Policies
about_Profiles
Get-ExecutionPolicy
Set-ExecutionPolicy
Set-AuthenticodeSignature
"Introduccin a la firma de cdigo" (http://go.microsoft.com/fwlink/?LinkId=1062
96)(puede estar en ingls)