Cómo firmar digitalmente scripts de PowerShell
En este artículo, se crea un certificado de firma digital para firmar archivos digitalmente con Windows PowerShell. Un certificado digital suele ser emitido por una Autoridad de Certificación (CA). Pero en esta publicación vamos a crear un certificado autofirmado. Por supuesto con PowerShell. No se necesitan herramientas de terceros.
Introducción
Un archivo está firmado con un certificado. La criptografía se puede utilizar para verificar la autenticidad. Esto se hace utilizando el par de claves, la clave privada y la clave pública. El archivo se firma digitalmente con la clave privada y la clave pública se utiliza para verificar su identidad. La clave pública se puede dar a cualquiera. La clave privada es sólo tuya. lo que significa que su identidad puede ser verificada.
En este artículo se crea un certificado autofirmado, lo que significa que, por el momento, usted y su computadora son los únicos en este planeta que confían en el certificado. ?
Crear un certificado autofirmado
Abra Windows PowerShell y ejecute el siguiente resumen para crear un certificado de firma.
New-SelfSignedCertificate -DnsName patrick@sid-500.com -CertStoreLocation Cert:\CurrentUser\My\ -Type CodesigningPuede encontrar su certificado en su tienda de certificados. Ejecute certmgr.msc.
certmgr.mscImporte el certificado en autoridades de certificación raíz de confianza y editor de confianza
Ahora el certificado debe exportarse y luego importarse a las autoridades de certificación raíz de confianza y a los editores de confianza.
Haga doble clic en el certificado y seleccione Detalles y Copiar al archivo…
No exporte la clave privada. No es necesario.
Seleccione Formato CER.
Guarda el archivo donde quieras.
Ahora importe el certificado a las autoridades raíz de confianza y los editores de confianza.
firmar un archivo
A continuación, usamos Set-Authenticodesignature para firmar nuestro archivo. En este ejemplo, es un. ps1, por lo tanto, un script de PowerShell.
Set-AuthenticodeSignature -FilePath C:\Temp\script1.ps1 -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My\ -CodeSigningCert)No se preocupe por el error de estado desconocido. La próxima vez que lo hagas sale válido. Cosas locas. Ok, no nos importa esto ahora.
Lindo. Finalmente, mira lo que pasó. Abra el Explorador de Windows, haga clic derecho en su archivo, seleccione propiedades y haga clic en Firmas digitales.
Probando tu guión
Para probar su script, asegúrese de que la política de ejecución permita la ejecución de scripts de PS1.
Get-ExecutionPolicyRemotesigned, AllSigned y Unrestricted son tus amigos... Si la política está configurada como restringida, configúrala (para este entorno de prueba) como AllSigned.
Set-ExecutionPolicy AllSignedMás sobre Políticas de Ejecución aquí:
https://technet.microsoft.com/de-at/library/hh847748.aspx
Luego ejecute su script.
Manejo de errores
Número 1
Si ve algo como esto, es posible que haya olvidado importar su certificado a las autoridades de certificación raíz de confianza.
C:\temp\Script1.ps1: el archivo C:\temp\Script1.ps1 no se puede cargar. Un certificado
cadena procesada, pero terminada en un certificado raíz en el que
no confía el proveedor de confianza.
Número 2
Si debe confirmar la ejecución de su script, se verá así:
¿Quieres ejecutar software de este editor que no es de confianza?
El archivo C:\temp\Script1.ps1 es publicado por CN=patrick@sid-500.com y no es
confiable en su sistema. Ejecute únicamente scripts de editores confiables.
[V] Nunca ejecutar [D] No ejecutar [R] Ejecutar una vez [A] Ejecutar siempre [?] Ayuda
(el valor predeterminado es “D”):
Para evitar esto, importe su certificado a Trusted Publishers.
¡Diviértete jugando con Certificados y Firmas Digitales!














