Un script o un ejecutable con firma digital permite al usuario asegurarse de que un archivo sea original y que su código no haya sido modificado por terceros. Las versiones actuales de PowerShell tienen herramientas integradas para la firma de código de archivos de script * .ps1 mediante certificados digitales.
Puede firmar un script de PowerShell con un tipo especial de certificado: Firma de código. Este certificado puede obtenerse de una autoridad de certificación comercial (AC) externa, una CA empresarial interna o puede utilizar un certificado autofirmado.
Supongamos que los servicios PKI (Servicios de certificados de Active Directory) se implementan en su dominio. Solicitemos un nuevo certificado yendo a https: // nombre-servidor-CA / certsrv y solicitando un nuevo certificado con el Firma de código plantilla (esta plantilla debe habilitarse primero en la consola de la autoridad de certificación).
Además, el usuario puede solicitar un certificado para firmar scripts de PowerShell desde el complemento mmc Certificados -> Mi cuenta -> Personal -> Todas las tareas -> Solicitar un nuevo certificado.
Si solicitó un certificado manualmente, debe tener un archivo de certificado x509 con un .cer extensión. Este certificado debe instalarse en el almacén de certificados local de su computadora.
Puede usar los siguientes comandos de PowerShell para agregar el certificado a los certificados raíz de confianza de la computadora:
$certFile = Export-Certificate -Cert $cert -FilePath C:pscertname.cer
Import-Certificate -CertStoreLocation Cert:LocalMachineAuthRoot -FilePath $certFile.FullName
Si desea usar un certificado autofirmado, use el cmdlet New-SelfSignedCertificate para crear un certificado CodeSigning con el nombre DNS testPC1:
New-SelfSignedCertificate -DnsName testPC1 -Type CodeSigning
$cert = New-SelfSignedCertificate -Subject "Cert for Code Signing” -Type CodeSigningCert -DnsName test1 -CertStoreLocation cert:LocalMachineMy
Una vez que se haya generado el certificado, muévalo del contenedor intermedio a la raíz de confianza mediante la consola del Administrador de certificados (certmgr.msc
).
Después de obtener el certificado, puede configurar la Política de ejecución de scripts de PowerShell para permitir que solo se ejecuten los scripts firmados. De forma predeterminada, la Política de ejecución de PowerShell en Windows 10 / Windows Server 2016 está configurada en Restringido (bloquea la ejecución de cualquier script de PowerShell).
File C:psscript.ps1 cannot be loaded because running scripts is disabled on this system.
Para permitir que solo se ejecuten scripts de PS1 firmados, puede cambiar la Política de ejecución de PowerShell a AllSigned o RemoteSigned (con la única diferencia de que RemoteSigned requiere una firma solo para los scripts descargados de Internet):
Set-ExecutionPolicy AllSigned –Force
En este modo, al ejecutar scripts de PowerShell sin firmar, aparece un error:
File C:script.ps1 cannot be loaded. The file script.ps1 is not digitally signed. You cannot run this script on the current system.
También puede permitir que los scripts de PowerShell firmados se ejecuten utilizando el Activar la ejecución de script Parámetro de política de grupo en Configuración del equipo -> Políticas -> Plantillas administrativas -> Componentes de Windows -> Windows PowerShell. Cambie el valor del parámetro a Permitir solo scripts firmados.
Ahora pasemos a firmar el archivo de secuencia de comandos de PowerShell. En primer lugar, debe obtener el certificado CodeSign del almacén de certificados local del usuario actual. Primero, enumeremos todos los certificados que se pueden usar para firmar el código:
Get-ChildItem cert:CurrentUsermy –CodeSigningCert
En nuestro caso, tomaremos el primer certificado de la tienda de certificados de usuario personal y lo guardaremos en la variable $ cert:
$cert = (Get-ChildItem cert:CurrentUsermy –CodeSigningCert)[0]
Si ha movido su certificado al almacén de certificados raíz de confianza, use el siguiente comando:
$cert = (Get-ChildItem Cert:LocalMachineAuthRoot –CodeSigningCert)[0]
Luego puede usar este certificado para firmar el archivo PS1 con su secuencia de comandos de PowerShell:
Set-AuthenticodeSignature -Certificate $cert -FilePath C:PStestscript.ps1
También puede utilizar el siguiente comando (en este caso, seleccionamos el certificado autofirmado creado anteriormente por DnsName):
Set-AuthenticodeSignature C:PStest_script.ps1 @(gci Cert:LocalMachineAuthRoot -DnsName testPC1 -codesigning)[0]
-TimestampServer "http://timestamp.verisign.com/scripts/timstamp.dll"
Si intenta utilizar un certificado SSL / TLS común para firmar el script, aparece un error:
Set-AuthenticodeSignature: Cannot sign code. The specified certificate is not suitable for code signing.
Puede firmar todos los archivos de script de PowerShell a la vez en la carpeta:
Get-ChildItem c:ps*.ps1| Set-AuthenticodeSignature -Certificate $Cert
Ahora puede verificar que el archivo de secuencia de comandos de PowerShell esté firmado correctamente. Puede usar el cmdlet Get-AuthenticodeSignature o abrir las propiedades del archivo PS1 e ir a la Firmas digitales pestaña.
Get-AuthenticodeSignature c:pstest_script.ps1 | ft -AutoSize
Si una UnknownError
aparece una advertencia al ejecutar el comando Set-AuthenticodeSignature, entonces este certificado no es de confianza, porque está ubicado en el almacén de certificados personales del usuario.
Debe moverlo a los Certificados raíz de confianza (no olvide revisar periódicamente el almacén de certificados de Windows en busca de certificados sospechosos y actualizar las listas de certificados raíz de confianza):
Move-Item -Path $cert.PSPath -Destination "Cert:LocalMachineRoot"
Ahora, al verificar la firma de un archivo PS1, se debe devolver el estado válido.
Al firmar un archivo de secuencia de comandos de PowerShell, el cmdlet Set-AuthenticodeSignature agrega un bloque de firma digital al final del archivo de texto PS1:
# SIG # Begin signature block ........... ........... # SIG # End signature block
El bloque de firmas contiene el hash del script, que se cifra con la clave privada.
La primera vez que intente ejecutar el script, aparecerá una advertencia:
Do you want to run software from this untrusted publisher? File C:PSscript.ps1 is published by CN=testPC1 and is not trusted on your system. Only run scripts from trusted publishers.
Si seleccionas [A] Ejecutar siempre en la primera ejecución del script, la próxima vez que ejecute el script, firmado con este certificado, ya no aparecerá una advertencia.
Para evitar que aparezca esta advertencia, debe copiar el certificado también en el Editores de confianza Autoridad certificada. Utilice la operación Copiar-Pegar en la consola de Certificados para copiar el certificado en los Editores de Confianza -> Certificados.
El script de PowerShell firmado ahora se ejecutará sin mostrar una notificación de editor que no sea de confianza.
Si el certificado raíz no es de confianza, cuando ejecute el script de PowerShell, aparecerá un error:
A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
¿Qué pasará si cambia el código del archivo de script de PowerShell firmado? El intento de ejecutarlo se bloqueará con la notificación de que se ha cambiado el contenido del script.
File xx.ps1 cannot be loaded. The contents of file xx.ps1 might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script cannot run on the specified system.
Intente verificar la firma del script mediante el cmdlet Get-AuthenticodeSignature. Si el hash calculado no coincide con el hash de la firma, el mensaje HashMismatch
aparece.
Por lo tanto, cualquier modificación del código del script PS1 firmado requerirá volver a firmarlo.
Recomendado para ti
- Este teclado profesional de 35 teclas con una sola mano con control avanzado programable te hace sentir más cómodo y crea tu propio teclado especial
- Mini portátil de 35 teclas, diseño mini que ofrece una experiencia de funcionamiento con una sola mano extremadamente simple
- Adecuado para tus manos y muñeca, simplifica el complejo procedimiento operativo, vence al rival más rápido en los juegos
- Teclado compatible con MAC, Win 2000, Win XP, Win ME, Vista, Win7, Win8, Android, Linux y más
- Brillante: retroiluminación LED, más fresco por la noche
- Bajo la tapa de esta llamativa caja RGB está el procesador AMD Ryzen 5 5500 tiene una frecuencia de reloj de alto rendimiento de 3,6 GHz y en combinación con la NVIDIA RTX 3060 con 12 GB de VRAM, DLSS y trazado de rayos, ofrece una experiencia gráfica de ensueño que hará que tu corazón se acelere.
- Gracias a los 16 GB de RAM a 3200 MHz y a la unidad SSD M.2 de 500GB, disfrutarás de los tiempos de carga más cortos y estarás siempre un paso por delante de tus rivales. Para una máxima comodidad, hemos preinstalado Windows 10 Pro en tu PCVIP y también hemos instalado una tarjeta WiFi. Sólo tienes que enchufar el PC, encenderlo y la diversión puede empezar de inmediato.
- Vas a convertirte en el mejor jugador en un tiempo récord gracias a la mejor configuración de ordenador gaming. No hay límites con nuestro innovador PC Gaming. Mejora tu experiencia de juego con el impresionante rendimiento del hardware de los PC Gaming de Ibericavip
- Rendimiento de primera clase gracias a la NVIDIA RTX 3060 con 12 GB de VRAM y ray tracing. Además, incluimos un monitor LED Full HD de 27 pulgadas, un teclado gaming RGB y un ratón gaming RGB con la mejor alfombrilla XXL
- Pantalla: Monitor Gaming Curvo 27" 165 Hz Full HD G-Sync Free Sync Compatible
- Romer-G Táctil: Los interruptores mecánicos Romer-G exclusivos convierten a Orion Spectrum en el teclado rápido de nuestra historia, una actuación de 1,5 mm permite la entrada de datos en Orion
- Velocidad y Rendimiento: El teclado con cable USB Logtiech Orion Spectrum ofrece una gran velocidad, con un 40 por ciento de durabilidad para un rendimiento optimo usado con un ratón Logitech
- RGB LIGHTSYNC: La iluminación RGB de Orion Spectrum se puede personalizar con una paleta de 16 millones de colores, la parte superior de cada tecla está iluminada para un resplandor uniforme
- Segunda Pentalla Arx: Mediante la base ajustable se pueden conectar Smartphones y tablets a Orion Spectrum, con Arx Control, los dispositivos móviles pueden mostrar información del juego en curso
- Teclas G Programables: El teclado Orion Spectrum dispone de 9 teclas G totalmente personalizables, a las que se pueden asignar comandos por perfil, colocadas para optimizar el acceso