«Ошибка SignTool: доступ запрещен» в процессе сборки TFS 2010 - PullRequest
4 голосов
/ 30 декабря 2011

При попытке подписать файл появляется сообщение «Ошибка SignTool: доступ запрещен».Когда я использую cmd администратора, все работает нормально.Однако этот процесс будет использоваться в процессе сборки TFS 2010, и при использовании задачи InvokeProcess с signtool выдается то же сообщение об отказе в доступе, что и в командной строке без прав администратора.

Дополнительная информация:

  • На машине предприятия Win2008 R2.
  • Пользователь является администратором машины и в домене.
  • Служба сборки TFS также настроена для запуска от имени этого пользователя.
  • Использование самоподписанного сертификата, созданного с использованием следующих инструкций: Как создать самоподписанный сертификат для подписи кодав Windows?

После выполнения этих инструкций у меня есть следующие файлы:

  • MyCA.cer
  • MyCA.pvk
  • MySPC.cer
  • MySPC.pvk
  • MySPC.pfx

MyCA находится в моих доверенных корневых центрах сертификации. Я импортировал MySPC.pfx в личные сертификаты, выполнив следующие действия.совет здесь: Ошибка SignTool: доступ запрещен

Для подписи я использую отпечаток MySPC.pfx, который был импортирован в раздел Personal, поэтому моя команда signtool выглядит следующим образом::

sign / sha1 1e9d7b5ad98552d9c58944e3f3903e6b929f4819 / t http://timestamp.verisign.com/scripts/timestamp.dll "FileName"

Еще раз это работает в режиме администратора.Это также работает при запуске cmd от имени администратора:

sign / f "C: \ Non-Release для подписи кода \ MySPC.pfx" / t http://timestamp.verisign.com/scripts/timestamp.dll "FileName"

Newдля подписи кода в целом, поэтому любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2013

У меня была такая же проблема, но с TeamCity. Signtool.exe может подписывать мой .msi при использовании в командной строке от имени администратора, но не из автоматической сборки.

В Windows Server 2008, R2 и 2012 сертификаты хранилища компьютеров фактически хранятся в этой папке:

C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys

Вам необходимо предоставить пользователю, который запускает сервер сборки, ЧИТАТЬ доступ к этой папке.

Как только вы это сделаете, запустите его снова, и вы обнаружите, что он должен работать правильно.

0 голосов
/ 22 июня 2012

Может быть проблема с разрешениями для ключей сертификата - см. http://blog.alner.net/archive/2011/11/18/signing-exes-and-msis-with-signtool-via-tfs-builds.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...