Code Signing сертификат — это особый тип цифрового сертификата, принципиально отличающийся от обычных web SSL сертификатов. Его задача не защита сайта, а подтверждение подлинности программного обеспечения. Когда разработчик распространяет пользователям новую программу, драйвер, мобильное приложение или PowerShell скрипт, он подписывает его Code Signing сертификатом. Эта подпись гарантирует две важные вещи: во-первых, кто является истинным автором программы, во-вторых, что программа не была никем изменена в процессе распространения. Это очень важно для современных операционных систем и антивирусных программ, поскольку неподписанная программа часто помечается как вредоносная.
Типы Code Signing и уровни валидации
Существует два основных типа Code Signing сертификатов: Standard и Extended Validation, коротко EV. Стандартный сертификат проходит обычную валидацию и в основном подходит для небольших разработчиков и проектов с открытым исходным кодом. EV Code Signing сертификат проходит усиленную валидацию, проверяются документы компании, бизнес-регистрация и другие официальные данные. EV сертификат поставляется в виде отдельного USB токена, что резко повышает безопасность. Microsoft SmartScreen фильтр сразу считает доверенными только программы, подписанные EV сертификатом, а подписанные Standard поднимаются до уровня доверия через определенный период.
В каких форматах работает Code Signing
Code Signing сертификат может использоваться для подписи множества типов файлов. Наиболее распространенные: исполняемые файлы Windows EXE и DLL, пакеты Microsoft Installer MSI, ActiveX компоненты, Java JAR файлы, Adobe AIR приложения, программы Apple Mac, макросы Microsoft Office и PowerShell скрипты. Для мобильных приложений: APK файлы Android для Google Play, iOS приложения подписываются через сертификат Apple Developer. Для драйверов существует специальный процесс, утвержденный Microsoft, называемый WHQL, требующий дополнительных тестов помимо Code Signing сертификата.
Процесс подписи Code Signing
Процесс подписи обычно выполняется с помощью инструментов командной строки. Для Windows используется утилита signtool.exe, входящая в Windows SDK. Через команду указывается файл сертификата, сервер временных меток и подписываемый файл. Временная метка или timestamp очень важна, поскольку даже после истечения срока действия сертификата подписи с временной меткой продолжают действовать. Для Mac используется codesign, для Java — jarsigner. В автоматизированных CI/CD пайплайнах процесс подписи обычно выполняется как последний этап сборки.
EV USB токен и безопасность
EV Code Signing сертификат обязательно поставляется в виде аппаратного токена, то есть USB устройства, соответствующего стандарту FIPS 140-2. Это очень сильно повышает безопасность, поскольку сертификат и приватный ключ нельзя извлечь из USB токена. Даже если компьютер заражен, хакер может подписывать программы только когда токен подключен, но не может украсть сертификат. Для токена вводится специальный PIN код, который требуется при каждой подписи. В случае потери токена сертификат должен быть немедленно отозван и получен заново.
Практика Sayt.uz
Через Sayt.uz оказывается полный сервис по получению и установке Code Signing сертификатов. Sectigo Standard Code Signing сертификат от 890 тысяч сум, DigiCert Standard от 1 миллиона 290 тысяч сум. EV Code Signing сертификаты от 2 миллионов 490 тысяч сум, поставляются с USB токеном. 94 процента клиентов получают сертификат в течение 3 рабочих дней, для EV процесс валидации занимает 5-10 рабочих дней. Консалтинг по автоматизации подписи в CI/CD пайплайнах от 290 тысяч сум.