Ошибка «недоверенная цепочка подписи файла» появляется, когда операционная система не может подтвердить подлинность цифровой подписи исполняемого файла, драйвера или скрипта. Это значит, что хотя файл и подписан, одна или несколько звеньев цепочки доверия отсутствуют, недействительны или не находятся в доверенном хранилище сертификатов. Ниже объясняется, почему возникает такая ситуация, как её проверить и какие действия помогут устранить проблему без риска для безопасности.
- Что такое цепочка подписи и почему возникает ошибка
- Как проверить цепочку подписи файла
- Windows
- macOS
- Linux (с использованием GnuPG или sigtool)
- Как исправить ошибку в Windows
- 1. Установить недостающий промежуточный или корневой сертификат
- 2. Обновить список доверенных корневых сертификатов
- 3. Отключить проверку отзыва (только для тестовых сред)
- 4. Использовать политику пропуска проверки для конкретного файла (не рекомендуется для production)
- Как исправить ошибку в macOS
- 1. Установить недостающий корневой сертификат в связку ключей
- 2. Обновить список доверенных корневых сертификатов через обновление системы
- 3. Временно разрешить запуск конкретного файла (для тестов)
- Как исправить ошибку в Linux
- 1. Добавить недостающий открытый ключ в доверенный набор
- 2. Проверить срок действия и отзыв ключа
- 3. Отключить проверку подписи только для теста (не рекомендуется для production)
- Профилактика для разработчиков и распространителей ПО
- Типичные ошибки при попытке исправить проблему
- Когда можно считать файл безопасным несмотря на ошибку
- Практический итог
Что такое цепочка подписи и почему возникает ошибка
Цифровая подпись файла строится по модели цепочки доверия: конечный сертификат, подписавший файл, выдаётся промежуточным центром сертификации (CA), который в свою очередь подписан корневым CA. Операционная система проверяет каждую ссылку в этой цепочке против своего списка доверенных корневых сертификатов и списков отзыва (CRL/OCSP). Если хотя бы одно звено:
- отсутствует в хранилище доверенных корневых сертификатов;
- истекло или было отозвано;
- имеет неправильное назначение (например, не предназначено для подписи кода);
- подписано с использованием устаревшего алгоритма, который система считает небезопасным;
то проверка завершается ошибкой «недоверенная цепочка подписи файла».
Как проверить цепочку подписи файла
Прежде чем пытаться исправить ошибку, полезно понять, где именно происходит разрыв цепочки. Ниже перечислены способы проверки в наиболее распространённых операционных системах.
Windows
- Щёлкните правой кнопкой мыши по файлу и выберите «Свойства».
- Перейдите на вкладку «Цифровые подписи».
- Выберите подпись и нажмите «Сведения».
- В окне сведений нажмите «Просмотреть сертификат», затем перейдите на вкладку «Путь сертификации».
- Каждое звено будет отмечено значком; если какое‑то звено помечено красным крестом или восклицательным знаком, это указывает на проблему.
macOS
- Откройте «Терминал» и выполните команду codesign -dv —verbose=4 /Путь/к/файлу.
- В выводе ищите секцию «Authority» — она покажет цепочку подписи.
- Если система сообщает, что код не подписан или подпись не доверена, откройте «Связку ключей» (Keychain Access), найдите соответствующие сертификаты и проверьте их статус.
Linux (с использованием GnuPG или sigtool)
- Для файлов, подписанных OpenPGP, выполните gpg —verify файл.sig файл.
- Для подписей Authenticode (редко, но возможны через sigtool из пакета osslsigncode) используйте sigtool verify файл.
- Вывод покажет, какие сертификаты использованы и успешно ли они проверены против доверенного набора.
Как исправить ошибку в Windows
После того как вы определили проблемное звено цепочки, выберите один из следующих способов.
1. Установить недостающий промежуточный или корневой сертификат
Если в пути сертификации отсутствует промежуточный сертификат, его можно получить с сайта издателя или из самого файла (часто он встроен в подпись). Затем:
- Сохраните сертификат в файл с расширением .cer или .crt.
- Дважды щелкните по файлу сертификата и выберите «Установить сертификат».
- Выберите размещение «Поместить все сертификаты в следующее хранилище» → «Доверенные корневые центры сертификации» (для корневого) или «Промежуточные центры сертификации» (для промежуточного).
- Завершите мастер установки и повторите проверку подписи файла.
2. Обновить список доверенных корневых сертификатов
В Windows доверенные корни обновляются через Центр обновления Windows. Выполните:
- Откройте «Параметры» → «Обновление и безопасность» → «Центр обновления Windows» → «Проверить наличие обновлений».
- Установите все доступные обновления, включая обновления для корневых сертификатов.
- Перезагрузите компьютер и проверьте файл снова.
3. Отключить проверку отзыва (только для тестовых сред)
Если проблема связана с недоступностью сервера OCSP или CRL, можно временно отключить проверку отзыва:
- Откройте «Свойства браузера» → вкладка «Дополнительно» → раздел «Безопасность».
- Снимите флажки «Проверять отзыв сертификатов издателя» и «Проверять отзыв сертификатов сервера».
- Нажмите OK и перезапустите приложение, которое использует файл.
Внимание: отключение проверки отзыва снижает уровень безопасности и допустимо только в изолированной тестовой среде.
4. Использовать политику пропуска проверки для конкретного файла (не рекомендуется для production)
В корпоративной среде можно добавить хеш файла в список доверенных через групповую политику:
- Откройте редактор групповой политики gpedit.msc.
- Перейдите в «Конфигурация компьютера» → «Политики» → «Параметры Windows» → «Политики безопасности» → «Политики контроля приложений» → «Правила исполнимых файлов».
- Создайте новое правило «Известный файл» и укажите путь к файлу, выбрав действие «Разрешить».
Это обходит проверку подписи только для указанного файла.
Как исправить ошибку в macOS
macOS использует Gatekeeper и службу проверки подписи. Если цепочка не доверена, выполните следующие действия.
1. Установить недостающий корневой сертификат в связку ключей
- Получите файл сертификата (обычно .cer или .crt) от разработчика ПО.
- Дважды щелкните по файлу — откроется «Связка ключей».
- Выберите хранилище «Система» (для всех пользователей) или «Вход» (для текущего пользователя).
- При установке macOS запросит пароль администратора; введите его.
- После установки дважды щелкните по сертификату в связке ключей, выберите «Доверие» и установите «Всегда доверять» для нужных целей (например, под код подписи).
- Закройте окно и повторите запуск приложения.
2. Обновить список доверенных корневых сертификатов через обновление системы
Apple периодически выпускает обновления, включающие новые корневые сертификаты.
- Откройте «Системные настройки» → «Обновление программного обеспечения».
- Установите все доступные обновления.
- Перезагрузите Mac и проверьте файл снова.
3. Временно разрешить запуск конкретного файла (для тестов)
Если вы уверены в источнике файла, можно обойти Gatekeeper:
- В Finder щёлкните правой кнопкой по приложению и выберите «Открыть».
- В появившемся диалоговом окне нажмите «Открыть» несмотря на предупреждение.
- macOS запомнит ваш выбор для этого конкретного файла.
Внимание: такой метод снижает защиту от вредоносного ПО и следует использовать только в контролируемой среде.
Как исправить ошибку в Linux
В большинстве дистрибутивов Linux проверка подписи файлов не выполняется автоматически при запуске бинарников, но она может использоваться в системах управления пакетами (rpm, deb) или в специализированных средах (например, Flatpak, Snap). Если вы столкнулись с ошибкой при проверке подписи пакета, сделайте следующее.
1. Добавить недостающий открытый ключ в доверенный набор
Для RPM‑пакетов:
- Получите открытый ключ разработчика (обычно файл RPM-GPG-KEY-…).
- Импортируйте его: sudo rpm —import /путь/к/ключу.
- Повторите попытку установки или обновления пакета.
Для DEB‑пакетов:
- Получите файл ключа *.asc или *.gpg.
- Добавьте его в APT: sudo apt-key add /путь/к/ключу (в новых версиях используйте sudo mkdir -p /etc/apt/keyrings и sudo gpg —dearmor -o /etc/apt/keyrings/имя.gpg < /путь/к/ключу, затем добавьте строку signed-by=/etc/apt/keyrings/имя.gpg в источник репозитория).
- Обновите список пакетов: sudo apt update и повторите действие.
2. Проверить срок действия и отзыв ключа
Если ключ просрочен или отозван, его нужно заменить на актуальный от разработчика. Следуйте инструкциям поставщика ПО по обновлению ключей.
3. Отключить проверку подписи только для теста (не рекомендуется для production)
Для RPM можно добавить опцию —nosignature при установке: sudo rpm -i —nosignature пакет.rpm. Для DEB можно использовать sudo dpkg -i —force-no-check-signature пакет.deb. Это отключает проверку подписи и должно применяться только в изолированной среде.
Профилактика для разработчиков и распространителей ПО
Чтобы пользователи не сталкивались с ошибкой недоверенной цепочки подписи, соблюдайте следующие рекомендации при подготовке релизов.
- Используйте сертификаты кодовой подписи, выпущенные известными публичными центрами сертификации (например, DigiCert, Sectigo, GlobalSign) и убедитесь, что промежуточные сертификаты включены в сам пакет подписи (вариант «встроенной цепочки»).
- Регулярно обновляйте свои сертификаты и следите за датами их окончания; обновляйте их заранее, чтобы избежать промежутков недействительности.
- Проверяйте, что алгоритм подписи соответствует современным требованиям (SHA‑256 или выше, RSA 2048‑bit или ECDSA P‑256 и выше). Старые алгоритмы (MD5, SHA‑1, RSA 1024‑bit) могут быть отмечены как небезопасные.
- Включите timestamp при подписи, чтобы подпись оставалась валидной даже после истечения сертификата, при условии, что timestamp‑сертификат доверен.
- Распространяйте промежуточные сертификаты вместе с вашим продуктом или предоставляйте чёткие инструкции по их установке.
- Тестируйте подпись на чистой системе без предустановленных корневых сертификатов вашего издателя, чтобы убедиться, что цепочка самодостаточна.
Типичные ошибки при попытке исправить проблему
Избегайте следующих действий, которые могут привести к ложному ощущению решения или ухудшению безопасности.
- Игнорировать ошибку и запускать файл без какой‑либо проверки — это открывает дверь для вредоносного кода, если файл действительно подменён.
- Устанавливать корневые сертификаты из непроверенных источников (например, с форумов или файлообменников) — такие сертификаты могут быть скомпрометированы.
- Отключать проверку отзыва или проверку подписи глобально на постоянной основе — это снижает защиту всей системы.
- Полагаться только на имя файла или репутацию сайта без проверки подписи — имя может быть подделано.
Когда можно считать файл безопасным несмотря на ошибку
В некоторых ситуациях ошибка не доверенной цепочки может быть ложной срабатыванием, и файл всё же безопасен. Рассмотрите следующие критерии:
- Вы получили файл непосредственно от официального источника (сайт разработчика, подписанный HTTPS‑канал, проверенный через PGP‑подпись разработчика).
- Вы можете независимо проверить хеш файла (SHA‑256) против значения, опубликованного разработчиком на надёжном канале (например, в блоге или в официальном твите).
- Файл предназначен для внутреннего использования в изолированной среде (виртуальная машина, песочница) и не будет иметь доступа к критическим данным.
- Вы готовы принять на себя риск и понимаете последствия возможного запуска неподписанного или изменённого кода.
- Определите, в какой ОС возникла ошибка и проверьте цепочку подписи с помощью встроенных средств (свойства файла, терминал, утилиты проверки).
- Если отсутствует промежуточный или корневой сертификат — получите его от разработчика и установите в доверенное хранилище.
- Если сертификаты присутствуют, но являются устаревшими или отозванными — обновите их через Центр обновления Windows, обновление macOS или менеджер пакетов Linux.
- Если проблема связана с алгоритмом подписи или отсутствием timestamp — попросите разработчика переподписать файл современным сертификатом с timestamp.
- После применения исправления повторно проверьте подпись файла; если ошибка исчезла — файл можно запускать.
- Если ошибка persists и вы не уверены в источнике файла — воздержитесь от запуска и обратитесь к поставщику ПО за новой подписанной версией.
Если ни одно из этих условий не выполнено, лучше воздержаться от запуска файла и устранить проблему цепочки подписи.
Практический итог
Главный принцип: ошибка «недоверенная цепочка подписи файла» сигнализирует о разрыве цепочки доверия между подписью файла и доверенными корневыми сертификатами ОС. Для её устранения нужно либо восстановить недостающее звено цепочки (установить missing промежуточный/корневой сертификат), либо обновить доверенные хранилища, либо, в исключительных случаях, принять на себя риск после тщательной проверки источника и хеша файла.
Конкретные следующие шаги:
Соблюдая эти действия, вы сможете безопасно устранить ошибку недоверенной цепочки подписи файла и минимизировать риск запуска непроверенного кода.
