Я пытаюсь подписать пакет appx для Windows 8 с помощью файла pfx, который у меня есть. Я использую команду так:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
И из этого я получаю:
Ошибка SignTool: не найдено сертификатов, соответствующих всем заданным критериям.
Каким «критериям» я не отвечаю? Это только для тестирования, так что это самозаверяющие сертификаты. Я попытался импортировать ключ и затем подписать его, но это всегда приводит к одной и той же ошибке. Как это исправить?
Signtool
пытается найти сертификат в хранилище доверенных корневых сертификатов, и у вас нет сертификатов подписи кода там.Ответы:
При получении этой ошибки через Visual Studio это произошло потому, что был настроен сертификат подписи, соответствующий компьютеру, на котором он был изначально разработан.
Вы можете проверить это, перейдя в свойства проекта> вкладка подписи и проверив данные сертификата.
Вы можете снять флажок «Подписывать манифесты ClickOnce», чтобы отключить подпись.
Если вы не хотите отключать эту опцию, вам придется установить сертификат.
источник
Попробуйте с / debug. 1,2 как в:
Это поможет вам узнать, что происходит. Вы должны получить вывод, как это:
Вы можете увидеть, какой фильтр вызывает ваш сертификат, или если сертификаты не рассматривались.
Я изменил хеш и другую информацию, но вы должны понять. Надеюсь это поможет.
1 Обратите внимание:
signtool
в частности, о том, где находится/debug
опция. Это должно идти послеsign
заявления.2 Также обратите внимание:
/debug
опция работает только с некоторыми версиямиsigntool
. Версия WDK имеет опцию, а версия Windows SDK - нет.источник
Пожалуйста, всегда проверяйте дату истечения срока действия вашего сертификата, потому что у большинства сертификатов есть срок действия. В моем случае срок действия сертификата истек, и я пытался построить проект.
источник
certutil -dump mycertificate.pfx
. Посмотрите на последнюю запись, поскольку первыми являются CA, а не сертификат подписи кода.Если вам не нужно подписывать приложение, щелкните правой кнопкой мыши ваш проект
Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"
Также, как предлагает эта статья MS,
источник
просто снимите флажок «Подписывать клик один раз» на вкладке подписи в свойствах проекта, это уберет ошибку, и вы можете создать новый как оттуда.
источник
Получил такую же проблему, оказалось, что закрытый ключ к сертификату не имел разрешения.
Чтобы исправить - откройте управление сертификатами, найдите свой сертификат, щелкните правой кнопкой мыши -> Управление личными ключами, а затем в безопасности сверху убедитесь, что ваш пользователь добавлен и у него есть разрешения, которые исправили его для меня.
источник
В моем случае у меня неправильный тип сертификата, который я пытаюсь связать.
У меня была «Проверка подлинности сервера», а не «Подписание кода» .
Вы должны увидеть это в разделе «Сертификат» в разделе «Назначение».
После этого все работает нормально.
источник
В случае, если кто-то столкнется с этим: моя проблема закончилась тем, что мне нужно было запустить командную строку от имени администратора перед использованием приложения signtool.exe. Тогда все работает чудесно.
источник
Я получил ту же проблему при разработке консольного приложения и в качестве быстрого решения ,
тогда иди
project properties
,нажмите на
signing
вкладку и снимите флажок «Подписать манифест ClickOnce».Описание изображения:
К вашему сведению, вы также можете увидеть это менее одной минуты видео решение . Приведенное выше изображение взято из видео.
источник
Я решил это с помощью
/sm
флаг, чтобы указать, чтобы искать в хранилище машины вместо хранилища по умолчанию, которое является Моим (локальным пользователем) хранилищем. Кроме того, это может помочь включить отладку для signtool с помощью/debug
.источник
У меня была эта проблема, и я не совсем уверен, какой шаг ниже заставил это работать, но надеюсь, что это поможет кому-то еще ... вот что я сделал:
certmgr.msc
и экспортировать сертификат (найденный в любом хранилище, которое вы использовали на первом шаге) в виде файла pfx, включая закрытый ключ и расширенные свойства (возможно, ненужные).signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
где пароль совпадает с паролем, указанным при экспорте
источник
.crt
файл, предоставленный Comodo, вместо установки сертификата, а затем экспортировал.pfx
файл.У меня та же проблема, читая некоторые ответы (размещенные здесь), я видел, что мой сертификат истек.
Просто создайте новый из моего стартового проекта. Затем у менеджера сертификатов удалили просроченный сертификат.
Теперь все компилируется нормально.
источник
Критерии включают, среди прочего, имя учетной записи (с чьим закрытым ключом он связан), домен, компанию, срок действия, предполагаемые цели.
Существует много возможных причин возникновения этой ошибки, некоторые из них уже перечислены. Вот еще один совет: при импорте сертификата убедитесь, что вы работаете с исходным файлом, полученным из центра сертификации (CA) , иначе некоторые свойства могут быть потеряны.
Пример: недавно я пытался импортировать сертификат, экспортированный из другой учетной записи на том же компьютере. Сертификат стал видимым для моей учетной записи, но не был связан с моей учетной записью, и в результате он
signtool
отказался распознать его без явного указания имени файла и пароля. Который, когда он выполняется как часть процесса сборки и записывается явно в командный файл или исходный файл, может быть недостаточно безопасным. (Импорт оригинального сертификата, выданного центром сертификации, решил эту проблему.)источник
У меня было то же самое " После фильтра закрытого ключа, осталось 0 сертификатов », и я потратил слишком много времени, пытаясь выяснить, что означает это сообщение.
Проблема заключалась в том, что я неправильно установил сертификат в хранилище сертификатов Windows, поэтому с сертификатом подписи кода не было никакого личного ключа.
Что я должен был сделать, это:
Используя Firefox или Internet Explorer, отправьте запрос эмитенту. Это генерирует PRIVATE KEY, который хранится в браузере в режиме без вывода сообщений (в Firefox на несколько секунд появляется диалоговое окно). Обратите внимание, что другие браузеры могут не работать: ваша жизнь слишком коротка, чтобы узнать, работают ли они.
Подайте запрос, перепрыгните через проверочные кольца эмитента, пожертвуйте козу, помолитесь богам, отправьте подписанное заявление от ваших прародителей и т.
Загрузите сертификат (.crt) и импортируйте его в тот же браузер . Браузер теперь имеет как закрытый ключ, так и сертификат .
Экспортируйте сертификат из браузера в виде файла обмена личной информацией (.p12). Вам будет предложено ввести пароль для защиты этого файла.
Сохраните резервную копию файла .p12.
Запустите диспетчер сертификатов (certmgr.msc), щелкните правой кнопкой мыши на хранилище личных сертификатов, выберите Все задачи / Импорт ... и импортируйте файл .p12 в Windows. Вам будет предложено ввести пароль, который вы использовали для защиты файла. На данный момент, в зависимости от ваших требований безопасности, вы можете пометить ключ как экспортируемый, чтобы вы могли восстановить копию из хранилища Windows. Вы также можете отметить, что перед использованием требуется пароль, если вы хотите нарушить пакетные сценарии.
Успешно запустите signtool, вздохните с облегчением и подумайте, сколько жизни вы потратили впустую из-за плохих сообщений об ошибках и плохой или отсутствующей документации.
источник
У меня тоже была эта проблема, много пробовал. Использовал SDK, а также подпись Visual Studio, но везде я получал «Не найдено сертификатов, соответствующих всем заданным критериям».
Решение. Имейте в виду, что если «после фильтра закрытого ключа»: «0 осталось» отображается с параметром signtool sign / debug ..., причина в том, что на вашем ПК нет самого CA в хранилище. Чтобы решить эту проблему, сначала установите CA (в моем случае это файл .crt), затем снова запустите sign. Это должно работать прямо сейчас!
Signtool можно использовать только с ЦС, который запрашивается и принадлежит тому же ПК.
источник
Моя проблема закончилась тем, что я не понимал параметры signtool. Я предоставил параметру / n что-то, что не соответствовало моему сертификату. Когда я убрал то он перестал жаловаться.
источник
У меня была похожая проблема, изменилось имя моего компьютера и истек срок действия сертификата. Я смог решить эту проблему, создав новый тестовый сертификат.
В Visual Studio щелкните правой кнопкой мыши проект в обозревателе решений. Выберите свойства. Выберите Подпись в окне свойств. Нажмите «Создать тестовый сертификат ....». Введите информацию о пароле для тестового сертификата и нажмите ОК.
источник
С / debug, когда вы получаете это сообщение «После фильтра закрытого ключа, осталось 0 сертификатов», одной из причин может быть то, что файл pfx не имеет закрытого ключа. При экспорте установленного сертификата в файл pfx убедитесь, что флажок также включает закрытый ключ.
источник
Перейти
project properties
и снять все поля сFirm
перед инициацией компиляции.источник