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

Avertissement concernant macOS Catalina Gatekeeper : L'application ne peut pas être ouverte car le développeur ne peut pas être vérifié

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écharger et installer Xcode - ceci 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 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 :

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