Firma de código
La firma de código es una tecnología de seguridad que utiliza para certificar que una aplicación fue creada por usted. Debes firmar tu aplicación para no desencadenar ninguna comprobación de seguridad por parte del sistema operativo.
En macOs, el sistema puede detectar cualquier cambio a la app, ya sea que el cambio sea introducido de manera intencional o maliciosa.
En Windows, el sistema asigna un nivel de confianza a tu certificado de firma de código. En caso de no contar con un certificado, o si el nivel del mismo es bajo, se mostrarán diálogos de seguridad cuando el usuario comience a hacer uso de tu aplicación. El nivel de confianza aumenta con el tiempo, por lo que es mejor iniciar la firma del código lo antes posible.
Si bien es posible distribuir aplicaciones sin firmar, no es recomendable. Tanto Windows como macOS evitarán, por defecto, la descarga o ejecución de aplicaciones sin firmar. A partir de macOS Catalina (versión 10.15), los usuarios tienen que pasar por múltiples pasos manuales para abrir aplicaciones sin firmar.
Como puedes ver, los usuarios tienen dos opciones: Mover la aplicación directamente a la papelera o cancelar la ejecución. Tú no quieres que tus usuarios vean ese diálogo.
Si tu estas haciendo una aplicación Electron que tu quieres empaquetar y distribuir, debería ser de código firmado.
Firmar & notarizar versiones de macOS
La preparación adecuada de las aplicaciones macOS para su lanzamiento requiere dos pasos. Primero, la aplicación debe contar con una firma de código. Luego, la aplicación debe ser cargada a Apple para un proceso llamado notarización, donde los sistemas automatizados comprobarán aún más que tu aplicación no está haciendo nada para poner en peligro a sus usuarios.
Para comenzar el proceso, asegúrate de cumplir con los requisitos para firmar y notarizar tu App:
- Afíliate en el Apple Developer Program (requiere un pago anual)
- Descargar e instalar Xcode - esto requiere un ordenador que ejecuta macOS
- Genera, descarga e instala signing certificates
El ecosistema de Electron favorece la configuración y la libertad, así que hay múltiples maneras de que tu aplicación sea firmada y notarizada.
Usando Electron Forge
Si usas la herramienta de construcción favorita de Electron, firmar tu aplicación y notarizarla requiere algunas adiciones a tu configuración. Forge is a collection of the official Electron tools, using electron-packager
, @electron/osx-sign
, and @electron/notarize
under the hood.
Detailed instructions on how to configure your application can be found in the Signing macOS Apps guide in the Electron Forge docs.
Usando Electron Packager
If you're not using an integrated build pipeline like Forge, you are likely using electron-packager
, which includes @electron/osx-sign
and @electron/notarize
.
Si estás usando la API de Packager, puedes pasar en la configuración que ambos signos y notariza tu aplicación.
const packager = require('electron-packager')
packager({
dir: '/path/to/my/app',
osxSign: {},
osxNotarize: {
appleId: 'felix@felix.fun',
appleIdPassword: 'my-apple-id-password'
}
})
Firmar aplicaciones de la App Store de Mac
Consulta la Mac App Store.
Firmando compilaciones Windows
Antes de Firmar Compilaciones Windows, tu debes hacer lo siguiente:
- Obtener un certificado de firma de código de Windows Authenticode (requiere una cuota anual)
- Instale Visual Studio para obtener la utilizada para firmar (la gratis Community Edition es suficiente)
Usted puede obtener una certificado de firma de código desde muchos revendedores. Los precios varías así que vale la pena comparar precios. Entre los revendedores populares se incluyen:
- digicert
- Sectigo
- Entre otros, por favor compre en todo para encontrar uno que se adapte a sus necesidades! 😄
:::Precaución Mantén la contraseña de tu certificado privada
La contraseña de tu certificado debe ser ****secreta. No la compartas o publiques en tu código fuente.
:::
Usando Electron Forge
Electron Forge is the recommended way to sign your Squirrel.Windows
and WiX MSI
installers. Detailed instructions on how to configure your application can be found in the Electron Forge Code Signing Tutorial.
Utilizando electron-winstaller (Squirrel.Windows)
electron-winstaller
es un paquete que puede generar instaladores de Squirrel.Windows para tu aplicación de Electron. Esta es la herramienta utilizada bajo el capó por Electron Forge Squirrel.Windows Maker. Si no estás usando Electron Forge y quieres usar electron-winstaller
directamente, utiliza las opciones de configuración de certificateFile
y certificatePassword
al crear tu instalador.
const electronInstaller = require (' Electron-winstaller ')
//NB: utiliza esta sintaxis dentro de una función asincrónica ya que Node no tiene soporte para
//nivel superior Await a partir del nodo 12.
try {
await electronInstaller.createWindowsInstaller({
appDirectory: '/tmp/build/my-app-64',
outputDirectory: '/tmp/build/installer64',
authors: 'My App Inc.',
exe: 'myapp.exe',
certificateFile: './cert.pfx',
certificatePassword: 'this-is-a-secret'
})
console.log('It worked!')
} catch (e) {
console.log(`No dados: ${e.message}`)
}
Para opciones de configuración completas, ¡revisa el repositorio electron-winstaller
!
Usar Electron-Wix-MSI (WiX MSI)
electron-wix-msi
es un paquete que puede generar instaladores MSI para tu aplicación Electron. Esta es la herramienta utilizada bajo el capó por Electron Forge MSI Maker.
Si no estás usando Electron Forge y quieres usar electron-wix-msi
directamente, utiliza las opciones de configuración certificateFile
y certificatePassword
o transfiere los parámetros directamente a SignTool. exe con la opción signWithParams
.
import { MSICreator } from 'electron-wix-msi'
// Step 1: Instantiate the MSICreator
const msiCreator = new MSICreator({
appDirectory: '/path/to/built/app',
description: 'My amazing Kitten simulator',
exe: 'kittens',
name: 'Kittens',
manufacturer: 'Kitten Technologies',
version: '1.1.2',
outputDirectory: '/path/to/output/folder',
certificateFile: './cert.pfx',
certificatePassword: 'this-is-a-secret'
})
// Step 2: Create a .wxs template file
const supportBinaries = await msiCreator.create()
// 🆕 Step 2a: optionally sign support binaries if you
// sign you binaries as part of of your packaging script
supportBinaries.forEach(async (binary) => {
// Binaries are the new stub executable and optionally
// the Squirrel auto updater.
await signFile(binary)
})
// Paso 3: Compila la plantilla a un archivo .msi
await msiCreator.compile()
Para opciones de configuración completas, ¡revisa el repositorio electron-wix-msi
!
Usando Electron Builder
Electron Builder viene con una solución personalizada para la firma de su aplicación. Usted puede encontar its documentation here.
Firmar aplicaciones de la Windows Store
Mira la guía de la Windows Store.