Перейти к содержимому

Я потратил более 4к долларов на EV Code Signing Certificate

Когда вы скачиваете файл на Windows — браузер и система проверяют ваш файл на вирусы и репутацию.

Хотите быть доверенным — надо покупать Extended Validation (EV) Code Signing Certificate за много денег, но его мало просто купить, с ним много тонкостей, о которых дальше и пойдет речь, а также о том, как я потратил больше 4к долларов!

Мы пишем приложение на Flutter для управления iOS, macOS и в целом интеграцию с App Store Connect (aso.dev), и, как оказалось, многие ASO специалисты пользуются только Windows…

У нас, в принципе, MacBook’и, причем на M1, поэтому собрать приложение на виртуалке для Windows x86 — как минимум близкое к невозможному (я пытался).

Сначала я обратился к супер-прекрасной программе от Microsoft для стартапов — Founders Hub, по которой я довольно просто получил $5k на Azure.

Настроил за две недели CI/CD сборку. В целом, всё просто: тонкости настройки переменных или PATH. Я вспомнил, за что не люблю Windows — локально всё работает, а в CI/CD — магия…

После сборки установочного .exe файла я понял, что скачать и поставить его с сайта — это большая проблема…

Windows Smart Screen

Google выдал информацию про Extended Validation (EV) Code Signing Certificate и Code Signing Certificate, а вот разница между ними — 2–3 цены… Долгое изучение деталей показало, что EV поможет с Windows Smart Screen, а простой сертификат — на 95% случаев не поможет.

EV Code Signing Certificate нельзя хранить файлом, ему нужен HSM или токен, токен через RDP не работает (я тестировал), а сборка у меня только в облаке, поэтому был найден Azure Dedicated HSM с такими ценами:

Цены на HSM

Цены на HSM

Сертификаты для облака должны поддерживать облако (вроде бы).

Внимательный читатель заметит, что цена указана за ЧАС! Я не заметил и попал на 3+k $! Не знаю, что бы я делал, если бы это были личные деньги, а не часть гранта!

Счёт на месяц

Счёт на месяц

Я удалил всё, что смог найти в Key Vaults, и стал проверять счета каждый день. Ещё через день я понял, что деньги продолжают утекать, и удалил оставшиеся блоки для ключей. На этом моё желание держать сертификаты в облаке закончилось.

Заказ сертификата и ещё проблемы

Мы заказали сертификат на IdenTrust. Во время заказа указали разные адреса для доставки и оплаты, и они не совпали с банковским адресом карты. Деньги заморозили на неделю, поддержка не смогла помочь. После возврата мы заказали сертификат снова, но уже без физического токена и успешно прошли форму оплаты. Однако нам отказали, так как фирма существует менее трёх лет. Деньги заморозили ещё на неделю.

Был найден сертификат на SSL.com за $349 (кошмар), и они достаточно чётко описали, как работать с YubiKey, хотя и требовали YubiKey FIPS.

Подписать .exe на Mac можно, в теории, но я был уже не готов, да и грант только на год, поэтому после долгих исследований был куплен HP Pro Mini 400 G9 DM/DOS/i5-12500T/8GB/512GB за 58644 RSD (примерно $540), а также был куплен YubiKey 5C за $50.

Забавный факт: загрузочную флешку для установки Windows можно создать только с Windows! (потратил на это целый день)

Монитор в ремонте, спасает проектор

Монитор в ремонте, спасает проектор

Приключение с Google Maps

Для прохождения проверки компании нужен адрес на Google-картах (не только, но это самый простой вариант). Добавить новую компанию на карты оказалось намного проще, чем обновить информацию о существующей, даже если ты её владелец. У нас адрес был указан и скрыт, при попытке его отобразить они запрашивали видеоподтверждение, которое никто, кажется, не смотрит.

Google звонил нам 6 раз (три раза мы общались), но это не помогло обновить данные, даже после отправки документов с тем же адресом. В итоге мы добавили новую точку на картах с адресом, а старую удалили после проверки.

Попытки подписать приложение

После всех проверок и звонков сертификат был выпущен на ASO.DEV LLP, и начались мои попытки подписать приложение.

Основная проблема в том, что SSL.com пытается продать вам e-codeSign в облаке (дорого), поэтому инструкцию для локального запуска со своим ключом надо искать самостоятельно!

Я не буду пересказывать инструкции, оставлю ссылки здесь и остановлюсь на важных деталях:

Тонкости

  • Code Signing не работает через RDP!
  • Не передавайте установочные файлы через мессенджеры — лучше используйте CDN, иначе ОС может заблокировать установку.
  • Проверьте Attestation Certificate с SSL.com и прикрепите его к заказу. Если будет ошибка подписи, придётся либо подождать обновления файлов, либо написать в поддержку.
  • Я купил FIPS после ошибки подписи, и через несколько дней поддержки всё починили (обновили Verify Attestation Certificate, как я понял). Подключить второй токен для подписи не удалось — выдало ошибку из-за отсутствия приватного ключа. Больше сил на эксперименты не было.

Фото, так как скриншот заблокирован

Фото, так как скриншот заблокирован

Ещё одна важная причина, почему мы начали всю эту историю с сертификатами — автообновление программы на Windows не работало. После подписания сертификатом оно НЕ заработало, но после исправления в конфиге sparkle:edSignature на sparkle:dsaSignature всё заработало.