Невозможно импортировать ключевой файл «blah.pfx» – ошибка «Ключ-файл может быть защищен паролем»

Мы только что обновили наши проекты Visual Studio 2008 до Visual Studio 2010. Все наши сборки были сильно подписаны с использованием сертификата подписи кода Verisign . С момента обновления мы постоянно получаем следующую ошибку:

Не удается импортировать следующий ключевой файл: companyname.pfx. Ключевой файл может быть защищен паролем. Чтобы исправить это, попробуйте снова импортировать сертификат или вручную установить сертификат в Сильное имя CSP со следующим именем контейнера: VS_KEY_3E185446540E7F7A

Это происходит на некоторых машинах-разработчиках, а не на других. Некоторые методы, используемые для исправления этого, которые работали некоторое время, include:

  • Переустановите файл ключа из проводника Windows (щелкните правой кнопкой мыши на файле PFX и нажмите «Установить»)
  • Установка Visual Studio 2010 на новую машину впервые запрашивает пароль при первом открытии проекта, а затем он работает. На компьютерах, обновленных с Visual Studio 2008, вы не получите эту опцию.

Я попытался использовать утилиту SN.EXE (инструмент сильного имени), чтобы зарегистрировать ключ с помощью сильного имени CSP, как это предлагает сообщение об ошибке, но всякий раз, когда я запускаю инструмент с любыми параметрами, используя версию, поставляемую с Visual Studio 2010, SN .EXE просто перечисляет аргументы командной строки, а не делает что-либо. Это происходит независимо от того, какие аргументы я поставлю.

Почему это происходит, и каковы четкие шаги по его устранению? Я собираюсь отказаться от установки ClickOnce и подписи кода Microsoft.

Я тоже сталкивался с этой проблемой. Я смог решить проблему, выполнив
sn -i ( устанавливает пару ключей в именованный контейнер ).

sn обычно устанавливается как часть SDK Windows. Например, C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe . Скорее всего, это место не находится на пути поиска для вашей стандартной среды. Тем не менее, «Developer Command Prompt», установленная Visual Studio, добавляет дополнительную информацию, которая обычно включает правильное местоположение.

На основе вашего сообщения, которое будет выглядеть

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

Это должно быть запущено из местоположения вашего файла PFX, если у вас есть решение, загруженное в VS 2010, вы можете просто щелкнуть правой кнопкой мыши файл pfx из проводника решений и выбрать команду «Открыть командную строку», которая запустит инструмент командной строки .net 2010 cmd в правильный каталог.

Перед выполнением этой команды sn я переустановил pfx, щелкнув правой кнопкой мыши и выбрав установку, однако это не сработало. Просто что-то отметить, так как это может быть сочетание того и другого, что обеспечило решение.

Надеюсь, это поможет решить вашу проблему.

Я обнаружил исправление, которое поможет вам успешно построить в среде нескольких разработчиков:

Вместо того, чтобы изменять пароль (который вызывает изменение .pfx), повторно выберите файл .pfx из выпадающего списка. Затем он вызывает диалог пароля. После ввода пароля проект будет построен ОК. Каждый разработчик может сделать это на своей локальной машине, фактически не изменяя файл .pfx.

У меня все еще возникают проблемы с сборкой сборок на нашей серверной машине сборки. Я получаю там же ошибку, но использование метода sn.exe -i не устраняет проблему для сервера buildserver.

У меня была такая же проблема, и удаление магазина и чтение не сработали. Я должен был сделать следующее.

  • Получите копию OpenSSL . Он доступен для Windows . Или используйте Linux-бокс, так как все они почти все имеют.

  • Для экспорта в файл ключа выполните следующее:

     openssl pkcs12 -in certfile.pfx -out backupcertfile.key openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key 

Затем в свойствах проекта вы можете использовать файл PFX.

VSCommands 2010 (плагин для Visual Studio) может исправить это для вас автоматически – просто щелкните правой кнопкой мыши по ошибке и нажмите «Применить исправление» в меню. Вы можете получить его из галереи Visual Studio .

Я говорил слишком рано! Rebuild принес ошибки обратно в игру …

Я нашел, что это работает – щелкните правой кнопкой мыши в обозревателе решений и исключите его из проекта. Нажмите « Показать все файлы» , щелкните правой кнопкой мыши и теперь снова включите его в проект. Теперь отмените ожидающие изменения …

По какой-то причине это разобрало это для меня и было относительно безболезненным!

Я обнаружил, что в некоторых случаях вы должны попытаться удалить этот ключ перед его установкой. Итак, сделайте следующее:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX

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

Поведение

Я понимаю, что «знак» использует сильное имя, а не аутентификацию для DLL или EXE. Вот почему signtool будет работать в этом случае, но «знак» в Visual Studio не будет работать.

причина

Раньше у меня был опыт работы с сертификатами Verisign. У них есть KeySpec=2 в сертификате, который используется с функциональностью «sign» в Visual Studio. Эти сертификаты отлично работают как для Visual Studio, так и для signtool.

Теперь я купил сертификаты от Comodo, у которых есть неправильный KeySpec=1 в сертификатах подписи кода. Это означает, что эти сертификаты отлично работают с signtool (authenticode), но не с сильным именем (выпадающим значком).

Решение

Существует два способа решить эту проблему:

  1. Создайте отдельный сертификат для вашего сильного имени, используя sn -k [name].snk . Подпишите сборку, используя snk, и затем используйте signtool с сертификатом подписи кода, чтобы подписывать DLL / EXE с подписью подлинника. Хотя это кажется странным, из того, что я понимаю, это правильный способ справиться с сертификатами, потому что сильные имена имеют другую цель, чем аутентификацию (см. Также эту ссылку для подробностей о том, как это работает).
  2. Импортируйте сертификат как KeySpec=2 . Процедура для этого подробно описана здесь .

Поскольку я хочу использовать несколько сильных имен, в настоящее время я использую параметр (1), хотя также работает опция (2).


Чтобы это решение никогда не потерялось в будущем, рассмотрим процедуру решения 2:

  1. Использование MMC «Certifates» экспортирует существующий набор ключей ( KeySpec=1 ) в файл PFX. Примечание. Сохраните этот файл в безопасном месте и проверьте, можно ли импортировать файл на другом компьютере, если вы действительно хотите его безопасно!
  2. Удалите существующий сертификат из хранилища криптохранилищ (stlll с помощью MMC).
  3. Откройте приглашение CMD.
  4. Импортируйте файл PFX с помощью этой команды:
    1. certutil -importPFX -user AT_SIGNATURE
    2. Введите парольную фразу для pfx при появлении запроса.

Теперь у вас должен быть ключ / сертификат с KeySpec=2 . При необходимости вы можете теперь экспортировать это в другой файл PFX с помощью MMC.

Чтобы устранить эту проблему в Visual Studio 2012, я нажимаю правой кнопкой мыши проект, свойства -> «подпись», а затем снимите флажок «Подписать манифест ClickOnce».

В качестве обходного пути я попытался запустить Visual Studio 2010 в качестве администратора, и это сработало для меня.

Надеюсь, это поможет.

Как оригинальный автор работы над сообщением об ошибке соединения, есть два варианта этого сообщения (я обнаружил позже)

Для одного варианта вы используете sn.exe (обычно, если вы делаете сильное именование), чтобы импортировать ключ в хранилище сильных имен.

Другой вариант, для которого вы используете certmgr для импорта, – это когда вы назначаете код для таких вещей, как однократное развертывание (обратите внимание, что вы можете использовать тот же сертификат для обеих целей).

Надеюсь это поможет.

Ничто не работало для меня, но затем я пошел и заглянул в диспетчера сертификатов (mmc.exe). Сертификат не был импортирован в личный магазин, поэтому я импортировал его вручную, а затем скомпилировал проект.

См. Подпись подписи ClickOnce и подпись сильного имени с помощью страницы подписи Project Designer Visual Studio, подписи сборок .

Я переустановил файл Key (pfx) в раскрывающемся списке «Выбрать сильный ключевой файл», затем предоставил пароль в всплывающем окне «ВВОД ПАРОЛЬ». Сохраненный мой проект и выполнил rebuild.build.

  • Откройте Свойства проекта.
  • Нажмите на раздел Подпись.
  • Где он говорит: «Выберите сильный файл ключевого слова:», отмените текущее значение в раскрывающемся списке:

введите описание изображения здесь

  • Теперь Visual Studio предложит вам ввести пароль. Введите его.

введите описание изображения здесь

  • Сохраните проект и выполните восстановление.

  • Если вы получите сообщение об ошибке: «Была сделана попытка ссылаться на токен, который не существует», просто проигнорируйте его и выполните следующие шаги

  • Нажмите кнопку «Сменить пароль»:

введите описание изображения здесь

  • Введите исходный пароль во все три поля и нажмите «ОК». Если вы хотите изменить свой пароль (или если ваш старый пароль не соответствует требованиям сложности), вы можете сделать это сейчас.

  • Сохраните проект и выполните восстановление.

Больше информации..

Повторный выбор ключевого файла в поле со списком и ввод пароля помогает нам.

Но это необходимо делать каждый раз, когда файл ключа изменяется, и кажется, что это не нормально.

У меня была такая же проблема после переноса моей установки Windows на SSD . Ни один из других решений не работал для меня.

Моим решением было открыть файл проекта в « Блокноте» и удалить все ссылки на клавиши PFX. После сохранения файла откройте решение в Visual Studio. Перейдите в проект -> Свойства -> Подписание. Вы не должны видеть какие-либо ключи, перечисленные в поле «выбрать сильное имя ключевого файла». В поле со списком перейдите к ключу, выберите его, и теперь ваш проект может быть построен.

Моя проблема заключалась в том, что TFS Build Controller работает как сетевой сервис, и по какой-то причине я не понял, почему сертификаты службы Visual Studio Build Host не используются. Я изменил идентификатор службы Visual Studio Build на что-то более управляемое, убедился, что у него есть права на сервере TFS, и вручную добавил сертификаты с помощью MMC.

Проблема заключалась также в том, что MSBuild не может добавлять сертификаты, защищенные паролем, в хранилище.

Все описанные здесь методы мне не помогли. Но когда я удалил * .pfx-файл из моего проекта и снова добавил его в сборку сборки, я построил проект без ошибок! Я не могу объяснить причины. Но это сработало для меня.

Хорошо, это сработало для меня. Откройте старое решение / проект в качестве администратора в Visual Studio 2010 и откройте новое или скопированное решение / проект. В качестве администратора удалите скопированный файл pfk в новом решении / проекте Visual Studio 2010 и перейдите к свойствам проекта и отмените выбор.

Открыв оба проекта, скопируйте их в новый. Перейдите к свойствам проекта и выберите Build. Я открыл и закрыл Visual Studio, а также после удаления из нового проекта, который был создан, прежде чем копировать его из старого проекта и выбрать его. Сначала я получил ошибку в начале этого сообщения, когда копировал проект и пытался его создать.

У меня была аналогичная проблема, но после выбора pfx в «Сильном файле ключевого слова» ComboBox и при вводе пароля я все равно получил аналогичную ошибку (без части названия контейнера):

Не удается импортировать следующий ключевой файл: companyname.pfx. Ключевой файл может быть защищен паролем. Чтобы исправить это, попробуйте снова импортировать сертификат или вручную установить сертификат

Кроме того, не была заполнена панель сведений о сертификате «Подписать кликов».

Я сделал «Выбор из файла …» на моем pfx, и он решил проблему.

В моем сценарии служба сборки не использовала ту же учетную запись пользователя, что я импортировал ключ с помощью sn.exe .

После изменения учетной записи на мою учетную запись администратора все работает нормально.

Я решил эту проблему для себя, изменив следующую строку в файле .csproj проекта Visual Studio:

Это заставило ошибку «не импортировать»:

  true  

При изменении значения на значение false ошибка исчезла.

Это решило мою проблему: откройте свой проект VS

Дважды щелкните по Package.appxmanifest

Перейдите на вкладку «Упаковка»

выберите сертификат

нажмите «настроить сертификат»

выберите из файла и используйте example.pfx это единство или что-то еще созданное

FYI

Я использовал sn.exe с флагом -p в официальный код PFX-кода (купленный как подписание кода), как показано ниже, в котором создан файл SNK и в Visual Studio 2013 был просмотрен файл SNK для использования.

  • Что разрешило проблему с паролем.

Но проблема в том, что он продолжает говорить: «Ключевой файл * .. SNK не содержит пару открытого / закрытого ключа».

введите описание изображения здесь

Interesting Posts

Создание таблицы и диалога мастер-деталировки, как повторно использовать один и тот же диалог для создания и редактирования

C #: динамическое время выполнения

Коммуникация между fragmentом и активностью – лучшие практики

Могу ли я предотвратить установку драйвера с помощью Windows 8.1?

Ограничить создание баз данных Microsoft Access для каждого пользователя

Должен ли я удалить группу «Все» из моих общих папок?

Изменение папки установки Chrome в Windows 7

Какой код установки должен идти в Form Constructors по сравнению с событием Form Load?

Невозможно изменить версию факела проекта Dynamic Web Module до 3.0?

Перспективы электронной почты отправляются, но сохраняются в черновиках (не то, что вы думаете)

Как я могу создать событие в usercontrol и поймать его на главной странице?

Безопасно ли программное обеспечение NCH Software?

Бесплатная программа для автоматического обнаружения аппаратного обеспечения

Apache PDFBox конвертировать PDF в изображения

3 монитора на ноутбуке

Давайте будем гением компьютера.