security - gratis - ¿Cómo creo un certificado autofirmado para la firma de código en Windows?
crear certificado ssl windows (4)
Respuesta actualizada
Si está utilizando las siguientes versiones de Windows o posteriores: Windows Server 2012, Windows Server 2012 R2 o Windows 8.1, entonces MakeCert ya no está disponible y Microsoft recomienda usar el Cmdlet de PowerShell New-SelfSignedCertificate .
Si está utilizando una versión anterior, como Windows 7, tendrá que seguir con MakeCert u otra solución. Algunas personas suggest el Módulo Powershell de Infraestructura de Clave Pública (PSPKI) .
Respuesta original
Si bien puede crear un certificado de firma de código autofirmado (SPC - Certificado de editor de software ) de una sola vez, prefiero hacer lo siguiente:
Creación de una autoridad de certificación (CA) autofirmada
makecert -r -pe -n "CN=My CA" -ss CA -sr CurrentUser ^
-a sha256 -cy authority -sky signature -sv MyCA.pvk MyCA.cer
(^ = permitir línea de comando por lotes para ajustar la línea)
Esto crea un certificado autofirmado (-r), con una clave privada exportable (-pe). Se llama "Mi CA" y debe colocarse en la tienda CA para el usuario actual. Estamos usando el SHA-256 . La clave está destinada a la firma (-sky).
La clave privada debe almacenarse en el archivo MyCA.pvk y el certificado en el archivo MyCA.cer.
Importación del certificado de CA
Como no tiene sentido tener un certificado de CA si no confía en él, deberá importarlo al almacén de certificados de Windows. Puede usar el complemento de MMC Certificados, pero desde la línea de comando:
certutil -user -addstore Root MyCA.cer
Crear un certificado de firma de código (SPC)
makecert -pe -n "CN=My SPC" -a sha256 -cy end ^
-sky signature ^
-ic MyCA.cer -iv MyCA.pvk ^
-sv MySPC.pvk MySPC.cer
Es prácticamente el mismo que el anterior, pero proporcionamos una clave de emisor y un certificado (los modificadores -ic y -iv).
También queremos convertir el certificado y la clave en un archivo PFX:
pvk2pfx -pvk MySPC.pvk -spc MySPC.cer -pfx MySPC.pfx
Si desea proteger el archivo PFX, agregue el modificador -po; de lo contrario, PVK2PFX crea un archivo PFX sin frase de contraseña.
Usando el certificado para firmar el código
signtool sign /v /f MySPC.pfx ^
/t http://timestamp.url MyExecutable.exe
( Vea por qué las marcas de tiempo pueden importar )
Si importa el archivo PFX en el almacén de certificados (puede usar PVKIMPRT o el complemento MMC), puede firmar el código de la siguiente manera:
signtool sign /v /n "Me" /s SPC ^
/t http://timestamp.url MyExecutable.exe
Algunas posibles URL de marca de tiempo para signtool /t
son:
-
http://timestamp.verisign.com/scripts/timstamp.dll
-
http://timestamp.globalsign.com/scripts/timstamp.dll
-
http://timestamp.comodoca.com/authenticode
Documentación completa de Microsoft
Descargas
Para aquellos que no son desarrolladores de .NET, necesitará una copia del Windows SDK y .NET framework. Un enlace actual está disponible aquí: SDK & .NET (que instala makecert en C:/Program Files/Microsoft SDKs/Windows/v7.1
). Su experiencia puede ser diferente.
MakeCert está disponible desde el Símbolo del sistema de Visual Studio. Visual Studio 2015 lo tiene y se puede iniciar desde el menú Inicio en Windows 7 en "Indicador de comandos del desarrollador para VS 2015" o "Símbolo del sistema de herramientas nativas VS2015 x64" (probablemente todos ellos en la misma carpeta).
¿Cómo creo un certificado autofirmado para la firma de código usando herramientas del SDK de Windows?
A partir de PowerShell 4.0 (Windows 8.1 / Server 2012 R2), es posible crear un certificado en Windows sin makecert.exe .
Los comandos que necesita son New-SelfSignedCertificate y Export-PfxCertificate .
Las instrucciones se encuentran en Crear certificados autofirmados con PowerShell .
Es bastante fácil usar el comando New-SelfSignedCertificate en Powershell. Abre powershell y ejecuta estos 3 comandos.
1) Crear certificado :
$ cert = New-SelfSignedCertificate -DnsName www.yourwebsite.com -Type CodeSigning -CertStoreLocation Cert: / CurrentUser / My2) establecer la contraseña para ello :
$ CertPassword = ConvertTo-SecureString -String "my_passowrd" -Force -AsPlainText3) Exportarlo :
Export-PfxCertificate -Cert "cert: / CurrentUser / My / $ ($ cert.Thumbprint)" -FilePath "d: / testcert.pfx" -Password $ CertPassword
Su certificado testcert.pfx se ubicará @ D:/
La respuesta de Roger fue muy útil.
Sin embargo, tuve algunos problemas para usarlo y seguí recibiendo el mensaje de error "Windows no puede verificar el editor de este software de controlador". La clave fue instalar el certificado raíz de prueba con
certutil -addstore Root Demo_CA.cer
que la respuesta de Roger no cubrió del todo.
Aquí hay un archivo por lotes que funcionó para mí (con mi archivo .inf, no incluido). Muestra cómo hacerlo todo de principio a fin, sin herramientas GUI en absoluto (excepto por algunas indicaciones de contraseña).
REM Demo of signing a printer driver with a self-signed test certificate.
REM Run as administrator (else devcon won''t be able to try installing the driver)
REM Use a single ''x'' as the password for all certificates for simplicity.
PATH %PATH%;"c:/Program Files/Microsoft SDKs/Windows/v7.1/Bin";"c:/Program Files/Microsoft SDKs/Windows/v7.0/Bin";c:/WinDDK/7600.16385.1/bin/selfsign;c:/WinDDK/7600.16385.1/Tools/devcon/amd64
makecert -r -pe -n "CN=Demo_CA" -ss CA -sr CurrentUser ^
-a sha256 -cy authority -sky signature ^
-sv Demo_CA.pvk Demo_CA.cer
makecert -pe -n "CN=Demo_SPC" -a sha256 -cy end ^
-sky signature ^
-ic Demo_CA.cer -iv Demo_CA.pvk ^
-sv Demo_SPC.pvk Demo_SPC.cer
pvk2pfx -pvk Demo_SPC.pvk -spc Demo_SPC.cer ^
-pfx Demo_SPC.pfx ^
-po x
inf2cat /drv:driver /os:XP_X86,Vista_X64,Vista_X86,7_X64,7_X86 /v
signtool sign /d "description" /du "www.yoyodyne.com" ^
/f Demo_SPC.pfx ^
/p x ^
/v driver/demoprinter.cat
certutil -addstore Root Demo_CA.cer
rem Needs administrator. If this command works, the driver is properly signed.
devcon install driver/demoprinter.inf LPTENUM/Yoyodyne_IndustriesDemoPrinter_F84F
rem Now uninstall the test driver and certificate.
devcon remove driver/demoprinter.inf LPTENUM/Yoyodyne_IndustriesDemoPrinter_F84F
certutil -delstore Root Demo_CA