Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика
Добрый день, коллеги.
Подскажите, а как вы организовали сборку и подпись через CI/CD?
У меня всё это было на самом сервере через файл pfx, а сейчас сертификат перевыпустили, с токеном. И токен на самом сервере не работает.
Пока создание виртуалки на сервере, подключение токена туда, подключение к ней агента сборки и подписи на этой виртуалке я не вижу решения.
Как вы решаете эту проблему, подключения токена к машине с интерактивной сессией и консоли?
Добрый день!
Ранее здесь уже неоднократно обсуждали проблему подписи из-под службы Windows для автоматизации CI/CD. У меня аналогичная ситуация – подпись работает, только если signtool запускается в интерактивной сессии.
Имеется команда
signtool.exe sign /n xxxx /debug C:\sign\assembly.dll
Если её запускать из командной строки (руками), то всё работает. При чём, даже если вызывать команду через runas без загрузки профиля (runas /noprofile). Вывод:
The following certificates were considered: ... After EKU filter, 1 certs were left. After expiry filter, 1 certs were left. After Subject Name filter, 1 certs were left. After Private Key filter, 1 certs were left. The following certificate was selected: xxxx Done Adding Additional Store Successfully signed: C:\sign\assembly.dll Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0
Если вызывать её через службу Windows (создать службу при помощи NSSM для signtool или же батника), то закрытый ключ не находится, и в любой комбинации инструментов вывод получается следующим:
The following certificates were considered: ... After EKU filter, 1 certs were left. After expiry filter, 1 certs were left. After Subject Name filter, 1 certs were left. After Private Key filter, 0 certs were left. SignTool Error: No certificates were found that met all the given criteria.
В свойствах службы указан пользователь, в хранилище которого установлен сертификат.
Галочка "Разрешить взаимодействие с рабочим столом" в свойствах службы на поведение signtool не повлияла (добавлял системной УЗ сертификат в хранилище сертификатов для этого эксперимента).
К слову, в статье https://dev.rutoken.ru/pages/viewpage.a … =169967624 описано подписание из-под службы Windows, но по факту это не работает, ошибка та же.
Утилита psexec тоже не помогает.Целевое решение – CI/CD с подписью кода на основе: Jenkins + signtool + Рутокен. В идеале на built-in node , хотя через агента тоже допустимо. Сейчас можно заставить это работать только подключившись к рабочему столу Windows-машины и запустив на ней агента через командную строку руками. Если же агент запускается службой или пытаться подписывать на built-in node (основной Jenkins в виде службы), то закрытый ключ находиться не будет.
Подскажите, пожалуйста, существует ли решение этой распространённой задачи по автоматизации подписи кода при помощи "Рутокен ЭЦП 3.0"?