Solución:
Respuesta actualizada
Si está utilizando las siguientes versiones de Windows o posteriores: Windows Server 2012, Windows Server 2012 R2 o Windows 8.1, MakeCert ahora está en desuso y Microsoft recomienda usar el cmdlet de PowerShell Nuevo certificado autofirmado.
Si está utilizando una versión anterior como Windows 7, deberá seguir con MakeCert u otra solución. Algunas personas sugieren 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 de CA para el usuario actual. Estamos usando el algoritmo SHA-256. La clave está destinada a firmar (-sky).
La clave privada debe almacenarse en el archivo MyCA.pvk y el certificado en el archivo MyCA.cer.
Importando el certificado de CA
Debido a que no tiene sentido tener un certificado de CA si no confía en él, deberá importarlo al almacén de certificados de Windows. usted pueden use el complemento Certificados MMC, pero desde la línea de comando:
certutil -user -addstore Root MyCA.cer
Creación de 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 más o menos lo mismo que el anterior, pero proporcionamos una clave de emisor y un certificado (los conmutadores -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 ser importantes)
Si importa el archivo PFX al 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
están:
http://timestamp.verisign.com/scripts/timstamp.dll
http://timestamp.globalsign.com/scripts/timstamp.dll
http://timestamp.comodoca.com/authenticode
Documentación completa de Microsoft
- signtool
- hacer concierto
- pvk2pfx
Descargas
Para aquellos que no son desarrolladores de .NET, necesitarán una copia del marco de trabajo de Windows SDK y .NET. Un enlace actual está disponible aquí: SDK y .NET (que instala makecert en C:Program FilesMicrosoft SDKsWindowsv7.1
). Su experiencia puede ser diferente.
MakeCert está disponible en el símbolo del sistema de Visual Studio. Visual Studio 2015 sí lo tiene, y se puede iniciar desde el menú Inicio en Windows 7 en “Símbolo del sistema del desarrollador para VS 2015” o “Símbolo del sistema de herramientas nativas VS2015 x64” (probablemente todos en la misma carpeta).
Como se indica en la respuesta, para usar una forma no obsoleta de firmar su propio script, se debe usar New-SelfSignedCertificate.
- Genera la clave:
New-SelfSignedCertificate -DnsName [email protected] -Type CodeSigning -CertStoreLocation cert:CurrentUserMy
- Exporte el certificado sin la clave privada:
Export-Certificate -Cert (Get-ChildItem Cert:CurrentUserMy -CodeSigningCert)[0] -FilePath code_signing.crt
los [0] hará que esto funcione para los casos en los que tenga más de un certificado … Obviamente, haga que el índice coincida con el certificado que desea usar … o use una forma de filtrado (por thumprint o emisor).
- Importarlo como editor de confianza
Import-Certificate -FilePath .code_signing.crt -Cert Cert:CurrentUserTrustedPublisher
- Importarlo como una autoridad de certificación raíz.
Import-Certificate -FilePath .code_signing.crt -Cert Cert:CurrentUserRoot
- Firme el script (asumiendo que aquí se llama script.ps1, corrija la ruta en consecuencia).
Set-AuthenticodeSignature .script.ps1 -Certificate (Get-ChildItem Cert:CurrentUserMy -CodeSigningCert)
Obviamente, una vez que haya configurado la clave, simplemente puede firmar cualquier otro script con ella.
Puede obtener información más detallada y ayuda para la resolución de problemas en este artículo.
Es bastante fácil usar el comando New-SelfSignedCertificate en Powershell. Abra powershell y ejecute 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: selfsigncert.pfx” -Password $ CertPassword
Tu certificado selfsigncert.pfx estará ubicado @ D:/
Paso opcional: También necesitaría agregar la contraseña del certificado a las variables de entorno del sistema. hágalo ingresando a continuación en cmd: setx CSC_KEY_PASSWORD "my_password"