Signature de code
La signature de code est une technologie de sécurisation utilisable lorque vous désirez certifier que vous êtes bien le créateur d'une application. Vous devez signer votre application afin que celle ci ne déclenche aucune vérifications de sécurité du système d'exploitation .
Sur macOS le système peut détecter tout changement apporté à l'application, qu'il s'agisse d'une modification introduite accidentellement ou par du code malveillant.
Sous Windows, le système assigne un niveau de confiance à votre certificat de signature de code, les utilisateurs seront alors avisés par des affichages de sécurité au démarrage de votre application si vous n'en possédez aucun ou si votre niveau de confiance est faible . Le niveau de confiance se développe au fil du temps, il est donc préférable de signer le code le plus tôt possible.
Bien qu'il soit possible de distribuer des applications non signées, cela n'est pas recommandé. Windows et macOS empêcheront par défaut le téléchargement ou l'exécution d'applications non signées. À partir de macOS Catalina (version 10.15), les utilisateurs doivent passer par plusieurs étapes manuelles pour ouvrir des applications non signées.
Comme vous pouvez le voir, les utilisateurs ont deux options : déplacez l'application directement dans la corbeille ou annulez son exécution. Vous ne voulez pas que vos utilisateurs voient cette boîte de dialogue.
Si vous développez une application Electron destinée à être empaquetée et distribuée, son code devrait être signé.
Signature & certification des versions macOS
La préparation des applications macOS pour la publication nécessite deux étapes. Tout d'abord, l'application doit être signée. Ensuite, l'application doit être téléchargée sur Apple pour un processus de certification appelé notarization, où des systèmes automatisés vérifieront en détails que votre application ne fait rien pour mettre en danger ses utilisateurs.
Pour démarrer le processus, assurez-vous que vous remplissez les conditions pour signer et certifier votre application :
- S'inscrire au Programme de Développeurs Apple (moyennant des frais annuels)
- Télécharger et installer Xcode - ceci nécessite un ordinateur exécutant macOS
- Générer, télécharger et installer des certificats de signature
L'écosystème d'Electron donne priorité à la configuration et a la liberté et bien sur donc il y a plusieurs moyens de signer et certifier votre application.
Utilisation d’Electron Forge
Si vous utilisez l'outil de génération d'Electron vous devrez faire quelques ajouts à votre configuration pour signer et certifier votre application. Forge est une collection d'outils officiels d'Electron qui utilise sous le capot electron-packager
, @electron/osx-sign
et @electron/notarize
.
Des instructions détaillées sur la configuration de votre application peuvent être trouvées dans le guide Signer les applications macOS dans la documentation d'Electron Forge.
Utilisation d'Electron Packager
Si vous n'utilisez pas un pipeline de construction intégré comme Forge, vous utilisez probablement electron-packager
, qui comprend lui mêm @electron/osx-sign
et @electron/notarize
.
Si vous utilisez l'API de Packager, vous pouvez fournir une configuration qui signera et certifiera votre application.
const packager = require('electron-packager')
packager({
dir: '/path/to/my/app',
osxSign: {},
osxNotarize: {
appleId: 'felix@felix.fun',
appleIdPassword: 'my-apple-id-password'
}
})
Signature des applications Mac App Store
Veuillez pour cela consulter le Guide Mac App Store.
Signature des versions Windows
Avant de signer les versions pour Windows, vous devez faire ce qui suit :
- Obtenir un certificat de signature de code d'authentification Windows (frais annuels)
- Installez Visual Studio pour obtenir l'utilitaire de signature ( Community Edition qui est gratuite est suffisante)
Vous pouvez obtenir un certificat de signature de code auprès de nombreux revendeurs. Les prix varient, donc il peut valoir la peine que vous compariez. Les revendeurs les plus populaires comprennent :
- digicert
- Sectigo
- Et il en existe bien d'autres, veuillez comparer pour en trouver un qui correspond à vos besoins! 😄
Votre mot de passe de certificat doit être secret. Ne l'exposez pas publiquement et ne l'inscrivez pas dans votre code source.
Utilisation d’Electron Forge
Electron Forge est le moyen recommandé pour signer vos installateurs Squirrel.Windows
ou WiX MSI
. Des instructions détaillées sur la façon de configurer votre application peuvent être trouvées dans le Tutoriel de signature de code Electron Forge.
Utilisation de electron-winstaller (Squirrel.Windows)
electron-winstaller
est un package pouvant générer des installateurs Squirrel.Windows pour votre application Electron. C'est l'outil utilisé sous le capot par Squirrel.Windows Maker d'Electron Forge. Si vous n'utilisez pas Electron Forge et voulez utiliser directement electron-winstaller
, vous devrez utiliser les options de configuration certificateFile
et certificatePassword
lors de la création de votre installateur.
const electronInstaller = require('electron-winstaller')
// NB: Utilisez la syntaxe suivante pour toute fonction async, Node does not have support for
// top-level await as of Node 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 dice: ${e.message}`)
}
Pour les options d'une configuration complète, consultez le dépôt electron-winstaller
!
Utilisation d'electron-wix-msi (WiX MSI)
electron-wix-msi
est un package permettant de générer des installateurs MSI pour votre application Electron. C'est l'outil utilisé sous le capot par MSI Maker d' Electron Forge.
Si vous n’utilisez pas Electron Forge et que vous souhaitez utiliser electron-wix-msi
directement, utilisez les options de configuration certificateFile
et certificatePassword
ou passez les paramètres directement à SignTool.exe grâce à l’option signWithParams
.
import { MSICreator } from 'electron-wix-msi'
// Étape 1: Instancier le 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'
})
// Étape 2: Créer un fichier de modèle .wxs
const supportBinaries = await msiCreator.create()
// 🆕 Étape 2a: signer éventuellement les binaires de support
// si vous signez vos binaires dans le cadre de votre script d'empaquetage
supportBinaries.forEach(async (binary) => {
// Les binaires sont le nouvel exécutable stub
// et optionnellement l'outil de mise à jour automatique Squirrel.
await signFile(binaire)
})
// Étape 3: Compiler le modèle dans un fichier .msi
await msiCreator.compile()
Pour les options d'une configuration complète, consultez le dépôt electron-wix-msi
!
Utilisation d'Electron Builder
Electron Builder est fourni avec une solution personnalisée pour signer votre application. Vous pouvez trouver sa documentation ici.
Signature des applications Windows Store
Veuillez pour cela consulter le Windows Store Guide.