Aller au contenu principal

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. us. 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.

macOS Catalina Gatekeeper warning: The app cannot be opened because the developer cannot be verified

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 :

  1. S'inscrire au Programme de Développeurs Apple (moyennant des frais annuels)
  2. Téléchargez et installez Xcode - cela nécessite un ordinateur exécutant macOS
  3. 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 un ensemble officiel d'outils Electron utilisant 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 génération intégré comme Forge, vous utilisez probablement electron-packager, qui comprend @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

Consultez le Guide Mac App Store.

Signature des versions Windows

Avant de signer les versions pour Windows, vous devez faire ce qui suit :

  1. Obtenir un certificat de signature de code d'authentification Windows (frais annuels)
  2. 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! 😄
Gardez secret votre mot de passe de certificat

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. L'outil utilisé sous le capot par Electron Forge est Squirrel.Windows Maker. 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 pouvant générer des installateurs MSI our votre application Electron. C'est l'outil utilisé sous le capot par Electron Forge MSI Maker.

Si vous n'utilisez pas Electron Forge et désirez utiliser directement electron-wix-msi, utilisez les options de configuration certificateFile et certificatePassword ou passez directement les paramètres à SignTool.exe avec l'option signWithParams.

import { MSICreator } from 'electron-wix-msi'

// Step 1: Instantier 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: Creation d'un fichier modèle .wxs
const supportBinaries = await msiCreator.create()

// 🆕 Step 2a: éventuellement signature des binaires
// si vous incluez la signature dans vos scripts de packaging
supportBinaries.forEach(async (binary) => {
// Binaries are the new stub executable and optionally
// the Squirrel auto updater.
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

Consultez le Guide Windows Store.