Я потратил более 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 файла я понял, что скачать и поставить его с сайта — это большая проблема…
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
Сертификаты для облака должны поддерживать облако (вроде бы).
Внимательный читатель заметит, что цена указана за ЧАС! Я не заметил и попал на 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
всё заработало.