Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Подпись кода

Подпись кода — цифровая подпись программы сертификатом разработчика. По ней система проверяет, кто выпустил программу и что её не изменили после выпуска. Неподписанную программу macOS не даст открыть обычным способом, а Windows покажет предупреждение SmartScreen о неизвестном издателе. Это обзорный урок: сами сертификаты покупаются и оформляются вне Electron.

Что даёт подпись

СистемаБез подписиС подписью
macOSСообщение, что программу нельзя открыть, так как разработчик не проверенПрограмма открывается как обычно
WindowsСинее окно SmartScreen «Windows защитила ваш компьютер»Имя издателя в окне установки, со временем без предупреждений
ОбновленияВ macOS автообновление не работаетРаботает

macOS: подпись и нотаризация

Для macOS нужны:

  1. Участие в Apple Developer Program (платная подписка).
  2. Сертификат Developer ID Application, установленный в связку ключей Mac.
  3. Нотаризация — отправка сборки в Apple на автоматическую проверку.

Forge делает оба шага при сборке, если указать настройки:

// forge.config.js
module.exports = {
  packagerConfig: {
    osxSign: {},
    osxNotarize: {
      appleId: process.env.APPLE_ID,
      appleIdPassword: process.env.APPLE_PASSWORD,
      teamId: process.env.APPLE_TEAM_ID,
    },
  },
};

Пустой объект osxSign означает «подписать сертификатом из связки ключей с настройками по умолчанию». appleIdPassword — не обычный пароль, а пароль приложения, созданный в учётной записи Apple. Подписывать и нотаризовать можно только на Mac.

Windows: сертификат Authenticode

Для Windows покупают сертификат подписи кода у удостоверяющего центра или используют облачную подпись, например Azure Trusted Signing. Сертификат в виде файла .pfx указывают мейкеру Squirrel:

// forge.config.js
module.exports = {
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {
        certificateFile: './certs/notes.pfx',
        certificatePassword: process.env.CERTIFICATE_PASSWORD,
      },
    },
  ],
};

После npm run make установщик и программа внутри него будут подписаны. Свойства файла Setup.exe в Проводнике покажут вкладку «Цифровые подписи» с именем издателя.

Подпись в CI

При сборке в GitHub Actions сертификат и пароли хранят в секретах репозитория и передают сборке как переменные окружения. Поэтому в конфигурации выше нет ни одного пароля — только process.env.

Частая ошибка

Нельзя записывать пароль сертификата или Apple ID прямо в forge.config.js и добавлять файл .pfx в Git. Любой, кто увидит репозиторий, сможет подписать вашим именем вредоносную программу. Храните секреты в переменных окружения, а папку certs/ добавьте в .gitignore.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.