Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Похоже, столкнулся с ошибкой, аналогичной ошибке у eie

Строю и подписываю файлы .exe с помощью signtool в сессии RMS на сервере ключа или в автоматическом режиме через MSBuild

Через RMS подписываются любые файлы, через MSBuild только файлы в 100 МБ и меньше. Может быть, граница проходит на каком-то другом уровне (200, 300, 500 МБ...), не знаю, но точно знаю, что файл в 1500 МБ подписать из MSBuild не удается никак

signtool.exe sign /fd sha256 /sha1 D...7 /v "C:\builds\61\V_x64.exe"
The following certificate was selected:
      Issued to: .......
      Issued by: GlobalSign GCC R45 EV CodeSigning CA 2020
      Expires:   Fri Mar 12 17:21:22 2027
      SHA1 hash: .........
  Done Adding Additional Store
  SignTool Error: The specified private key container was not found.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

mdomnitch, добрый день
проблема именно в размере файла? запуск команды подписи всегда одинаковый?

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Добрый день,

Благополучно подписались exe-файлы размером после подписи (59 838 592 байт) и (107 444 184 байт).
Не подписался файл размером до подписи (1 666 870 432 байт).
Командная строка во всех случаях одинаковая, размножена копипастом.

К сожалению, не знаю быстрого способа создать набор exe-файлов заданной длины, чтобы установить, начиная с какой именно длины ломается алгоритм.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

mdomnitch, Рутокен никак не ограничивает размер подписываемого файла.
Ошибка подписи возвращается сразу или через какое-то время?
Что будет если в команду подписи добавить debug?

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Ключ debug дает список сертификатов из хранилища (по соображениям корпоративной тайны полностью привести не могу), список фильтров (в результате выбран правильный сертификат GlobalSign) и ошибку; весь процесс, если верить логу, занял менее минуты; многоточия вставлены вместо чувствительной информации

BuildPerf    3093    15:24:56

  "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" sign /debug /fd sha256 /sha1 D4.....77 /td SHA256 /tr http://timestamp.globalsign.com/tsa/r6advanced1 "V.......exe"
 
  The following certificates were considered:
      Issued to: ....
      Issued by: Symantec Class 3 SHA256 Code Signing CA
      Expires:   Thu Apr 26 02:59:59 2018
      SHA1 hash: DD....6B
 
      Issued to: ......
      Issued by: GlobalSign GCC R45 EV CodeSigning CA 2020
      Expires:   Fri Mar 12 17:21:22 2027
      SHA1 hash: D4.....77
 
      Issued to: ......
      Issued by: localhost
      Expires:   Thu May 30 17:00:44 2024
      SHA1 hash: BF.......C4
 
      Issued to: .......
      Issued by: Symantec Class 3 SHA256 Code Signing CA
      Expires:   Tue May 18 02:59:59 2021
      SHA1 hash: B4.......BE
 
      Issued to: .....
      Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
      Expires:   Thu Jul 17 02:59:59 2036
      SHA1 hash: 4E......E5
 
      Issued to: ......
      Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
      Expires:   Sat Feb 08 02:59:59 2020
      SHA1 hash: 49....4F
 
      Issued to: ......
      Issued by: VeriSign Class 3 Code Signing 2010 CA
      Expires:   Thu Apr 26 02:59:59 2018
      SHA1 hash: 05......77
   
      Issued to: ............
      Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
      Expires:   Sun Dec 10 02:59:59 2023
      SHA1 hash: 00......A5
   
  After EKU filter, 7 certs were left.
  After expiry filter, 2 certs were left.
  After Hash filter, 1 certs were left.
  After Private Key filter, 1 certs were left.
  The following certificate was selected:
      Issued to: ......
      Issued by: GlobalSign GCC R45 EV CodeSigning CA 2020
      Expires:   Fri Mar 12 17:21:22 2027
      SHA1 hash: D4......77
 
  Done Adding Additional Store
  SignTool Error: The specified private key container was not found.
  Выход из команды ""C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" sign /debug /fd sha256 /sha1 D4......77 /td SHA256 /tr http://timestamp.globalsign.com/tsa/r6advanced1 "VideoNet_9_Setup_x64.exe"" с кодом 1.
  BuildPerf    3100    15:25:03

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

mdomnitch, судя по времени лога - ключ действительно не найден.
Опишите, пожалуйста, как запускается команда подписи, куда подключен токен и как зарегистрирован сертификат.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Сертификат записан на  токене Rutoken ECP 3.0   установлен  напрямую в сервер, операционная система MS Windows server 2022. Драйвера Рутокен – версия 4.18.0.0    Антивирусная программа Microsoft Defender – отключена.

Подключаемся к консоли сервера используя программу RMS. Через RDP  - НЕ подключаемся.
Сертификат зарегистрирован с помощью «панели управления Рутокен» снятием и установкой галочки в графе "Зарегистрирован".

Подписываем командным файлом со строкой "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" sign /debug /fd sha256 /sha1 D4......77 /td SHA256 /tr http://timestamp.globalsign.com/tsa/r6advanced1 "myexe.exe"

Если вызвать командный файл вручную из TotalCommander, подпись успешна при любом размере файла (проверял до 1800 МБ); если командный файл вызывается из скрипта построения MSBuild без пользовательской сессии, удается подписать только файл меньше 105-110 МБ.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

если командный файл вызывается из скрипта построения MSBuild без пользовательской сессии

скрипт запускается от имени того же пользователя, от которого был зарегистрирован сертификат?

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Аверченко Кирилл пишет:

если командный файл вызывается из скрипта построения MSBuild без пользовательской сессии

скрипт запускается от имени того же пользователя, от которого был зарегистрирован сертификат?

Да, разумеется - от одного и того же пользователя последовательно зарегистрирован ключ, закеширован пин, запускался командный файл и исполнялся MSBuild.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

mdomnitch, тогда это видимо какое-то ограничение именно в MSBuild. Наши библиотеки не накладывают никаких ограничений на размеры подписываемых файлов.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Добрый день!

Используем CI\CD TeamCity.
Отдел информационной безопасности предоставили сертификат CodeSign на носителе Рутокен.
Раньше был PFX файл.

Подскажите как можно автоматизировать процесс подписания сборок (используем signtool из набора Windows SDK).

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Аверченко Кирилл пишет:

mdomnitch, тогда это видимо какое-то ограничение именно в MSBuild. Наши библиотеки не накладывают никаких ограничений на размеры подписываемых файлов.

Не уверен по двум причинам:

1. Если использовать ключ DigiCert, то тот же Singtool из-под того же MSBuild благополучно подписывает файлы размером 1.6 ГБ и более
2. Здесь в этой ветке форуме уже имеются жалобы на ошибку "SignTool Error: The specified private key container was not found" при автоматическом построении подписываемого файла через GitLab, а не через MSBuild

Скорее присоединюсь к подозрению. высказанному здесь - https://forum.rutoken.ru/post/23851/#p23851

похоже, что подпись работает только при наличии графической сессии у пользователя

Перенес ключ на другой компьютер, зарегистрировал, закешировал pin - ошибка повторилась с небольшой разницей (наибольший размер подписываемого файла оказался 120 МБ).

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

mdomnitch пишет:

Здесь в этой ветке форуме уже имеются жалобы на ошибку "SignTool Error: The specified private key container was not found" при автоматическом построении подписываемого файла через GitLab, а не через MSBuild

Там проблема связана скорее всего с тем, как работает служба Gitlab.

Если бы у вас не подписывались небольшие файлы, то возможно, это было бы похоже.
Но у вас одинаково настроенный сервис не работает только из-за размера файла.

DigiCert выдает ключи на физических носителях или в виде pfx?

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Ключ DigiCert на физическом носителе.

Re: Использование signtool c Рутокен ЭЦП 3.0 с не экспортируемым сертифика

Аверченко Кирилл пишет:

Там проблема связана скорее всего с тем, как работает служба Gitlab.

Добрый день. Подскажите, есть ли подвижки в поиске решения этой проблемы? Ранее вы сообщали, что передали проблему разработчикам.
В сети есть рабочие примеры и инструкции по подписанию через GitLab, но там или другие производители токенов, или примеры с экспортируемыми ключами. А вот с новым рутокеном так сделать не получается..