Мы только что обновили наши проекты Visual Studio 2008 до Visual Studio 2010. Все наши сборки были подписаны с использованием сертификата подписи кода Verisign . После обновления мы постоянно получаем следующую ошибку:
Невозможно импортировать следующий файл ключей: companyname.pfx. Файл ключа может быть защищен паролем. Чтобы исправить это, попробуйте снова импортировать сертификат или вручную установить сертификат в CSP со строгим именем со следующим именем контейнера ключей: VS_KEY_3E185446540E7F7A
Это происходит на некоторых машинах разработчика, а не на других. Некоторые методы, используемые для исправления этой проблемы, работали иногда:
- Переустановка файла ключа из проводника Windows (щелкните правой кнопкой мыши файл PFX и выберите «Установить»)
- При установке Visual Studio 2010 на новой машине в первый раз запрашивается пароль при первом открытии проекта, и затем он работает. На машинах, обновленных с Visual Studio 2008, вы не получаете эту опцию.
Я пытался использовать утилиту SN.EXE (инструмент строгого имени), чтобы зарегистрировать ключ в CSP строгого имени, как следует из сообщения об ошибке, но всякий раз, когда я запускаю инструмент с любыми параметрами, используя версию, поставляемую с Visual Studio 2010, SN .EXE просто перечисляет свои аргументы командной строки вместо того, чтобы что-либо делать. Это происходит независимо от того, какие аргументы я привожу.
Почему это происходит, и каковы четкие шаги, чтобы это исправить? Я собираюсь отказаться от установки ClickOnce и подписи кода Microsoft.
Я обнаружил исправление, которое поможет вам успешно строить в среде с несколькими разработчиками:
Вместо изменения пароля (что приводит к изменению файла .pfx ), повторно выберите файл .pfx из выпадающего списка. Это тогда вызывает диалог пароля. После ввода пароля проект будет построен ОК. Каждый разработчик может сделать это на своем локальном компьютере без фактического изменения файла .pfx.
У меня все еще проблемы с получением сборок для подписи на нашем компьютере с сервером сборки. Я получаю ту же ошибку, но использование метода sn.exe -i не решает проблему для сервера сборки.
источник
У меня была та же проблема, и удаление магазина и чтение не работало. Я должен был сделать следующее.
Получить копию OpenSSL . Это доступно для Windows . Или используйте коробку Linux, поскольку у них всех есть это.
Выполните следующее для экспорта в файл ключа:
Затем в свойствах проекта вы можете использовать файл PFX.
источник
Я говорил слишком рано! Перестройка вернула ошибки в игру ...
Я нашел это работает - щелкните правой кнопкой мыши в Solution Explorer и исключите его из проекта. Нажмите Показать все файлы , щелкните правой кнопкой мыши и теперь снова включите его в проект. Теперь отмените ожидающие изменения ...
По какой-то причине это решило это для меня и было относительно безболезненно!
источник
Я обнаружил, что в некоторых случаях вы должны попытаться удалить этот ключ перед установкой. Так что сделайте следующее:
sn -d VS_XXXX
sn -i mykey.pfx VS_XXX
источник
VSCommands 2010 (плагин для Visual Studio) может исправить это для вас автоматически - просто щелкните правой кнопкой мыши на ошибке и выберите Apply Fix из меню. Вы можете получить его из галереи Visual Studio .
источник
Перепробовав все эти решения (и многое другое), я обнаружил, что проблема заключается в другом. Для людей, которые испытывают те же страдания, что и я, после покупки сертификата, я поделюсь решением своей проблемы.
Поведение
Я понимаю, что «знак» применяет строгое имя, а не аутентичный код к DLL или EXE. Вот почему signtool будет работать в этом случае, но «sign» в Visual studio не будет работать.
причина
В прошлом у меня был опыт работы с сертификатами Verisign. Они имеют
KeySpec=2
сертификат, который используется с функциональностью «знак» в Visual Studio. Эти сертификаты отлично работают как для Visual Studio, так и для signtool.Я теперь купил сертификаты у Comodo, которые имеют неверные
KeySpec=1
сертификаты подписи кода. Это означает, что эти сертификаты хорошо работают с signtool (authenticode), но не с сильными именами (выпадающий список).Решение
Есть два способа решить эту проблему:
sn -k [name].snk
. Подпишите сборку с помощью snk, а затем используйте signtool с сертификатом подписи кода, чтобы подписать DLL / EXE с помощью подписи authenticode. Хотя это кажется странным, насколько я понимаю, это правильный способ работы с сертификатами, потому что строгие имена имеют другое назначение, чем authenticode (см. Также эту ссылку для получения подробной информации о том, как это работает).KeySpec=2
. Процедура для этого подробно здесь .Поскольку я хочу использовать несколько строгих имен, в настоящее время я использую option (1), хотя option (2) также работает.
Чтобы гарантировать, что это решение никогда не потеряется в будущем, вот процедура решения 2:
KeySpec=1
) в файл PFX. Примечание. Пожалуйста, сделайте резервную копию этого файла в безопасном месте и проверьте, можно ли импортировать файл нормально на другой компьютер, если вы действительно хотите воспроизвести его безопасно!certutil -importPFX -user <pfxfilename> AT_SIGNATURE
Теперь у вас должен быть набор ключей / сертификат с
KeySpec=2
. При необходимости вы можете теперь экспортировать это в другой файл PFX, используя MMC снова.источник
Чтобы решить эту проблему в Visual Studio 2012, я щелкаю правой кнопкой мыши проект, свойства -> «подписывание», а затем снимаю флажок «Подписывать манифесты ClickOnce».
источник
Я повторно выбрал файл ключа (pfx) в раскрывающемся списке «Выберите файл ключа строгого имени», затем предоставил пароль во всплывающем окне «ВВОД ПАРОЛЯ». Сохранил мой проект и сделал rebuild.build успешно.
Сохраните ваш проект и сделайте перестройку.
Если получено сообщение об ошибке: «Была сделана попытка сослаться на несуществующий токен», просто проигнорируйте его и продолжите следующие шаги
Нажмите кнопку «Изменить пароль»:
Введите оригинальный пароль во все три поля и нажмите ОК. Если вы хотите изменить свой пароль (или если ваш старый пароль не соответствует требованиям сложности), вы можете сделать это сейчас.
Сохраните ваш проект и сделайте перестройку.
Больше информации..
источник
В качестве обходного пути я попытался запустить Visual Studio 2010 в качестве администратора, и это сработало для меня.
Надеюсь, это поможет.
источник
Как первоначальный автор обхода сообщения об ошибке подключения, существует два варианта этого сообщения (я обнаружил позже)
Для одного варианта вы используете sn.exe (обычно, если вы используете сильные имена), чтобы импортировать ключ в хранилище сильных имен.
Другой вариант, для которого вы используете certmgr для импорта, это когда вы подписываете код для таких вещей, как одноразовое развертывание (обратите внимание, что вы можете использовать один и тот же сертификат для обеих целей).
Надеюсь это поможет.
источник
У меня ничего не получалось, но потом я пошел и заглянул в диспетчер сертификатов (mmc.exe). Сертификат не был импортирован в личном хранилище, поэтому я импортировал его вручную, а затем проект скомпилирован.
См. Раздел « Подписывание манифеста ClickOnce и подпись со строгим именем сборки с использованием страницы подписи Visual Studio Project Designer», «Подписание сборок» .
источник
В этом нам поможет повторный выбор файла ключа в выпадающем списке и ввод пароля.
Но это необходимо делать каждый раз, когда файл ключа изменяется, и, похоже, он не в порядке.
источник
У меня была такая же проблема после переноса моей установки Windows на SSD . Ни одно из других решений не помогло мне.
Моим решением было открыть файл проекта в блокноте и удалить все ссылки на ключи PFX. После сохранения файла откройте решение в Visual Studio. Перейти к проекту -> Свойства -> Подписание. Вы не должны видеть никаких ключей, перечисленных в поле со списком «выберите файл ключа строгого имени». В поле со списком перейдите к ключу, выберите его, и ваш проект теперь можно построить.
источник
Моя проблема заключалась в том, что контроллер сборки TFS работал в качестве сетевой службы, и по какой-то причине я не понял, почему не использовались сертификаты службы сборки Visual Studio Build Host. Я изменил удостоверение службы Visual Studio Build на что-то более управляемое, убедился, что у него есть права на сервере TFS, и вручную добавил сертификаты с помощью MMC.
Проблема была также в том, что MSBuild не может добавить сертификаты, защищенные паролем, в хранилище.
источник
У меня была похожая проблема, но после выбора pfx в «ComboBox файла ключа строгого имени» и ввода пароля я все еще получал похожую ошибку (без части имени контейнера):
Также не была заполнена информационная панель сертификата «Подписать ClickOnce».
Я сделал «Выбрать из файла ...» на моем pfx, и это решило проблему.
источник
Все методы, описанные здесь, мне не помогли. Но когда я удалил файл * .pfx из своего проекта и снова добавил его в подпись сборки, я создал свой проект без каких-либо ошибок! Я не могу объяснить причины, почему. Но это сработало для меня.
источник
Хорошо, это сработало для меня. Откройте старое решение / проект от имени администратора в Visual Studio 2010 и откройте новое или скопированное решение / проект. Как администратор, удалите скопированный файл pfk в новом решении / проекте Visual Studio 2010, перейдите в свойства проекта и отмените выбор.
Открыв оба проекта, скопируйте вставку в новый. Зайдите в свойства проекта и выберите Build. Я открыл и закрыл Visual Studio, а также после удаления из нового проекта собрал его перед тем, как скопировать из старого проекта и выбрать его. Сначала я получил ошибку в начале этого поста, когда скопировал проект и попытался его собрать.
источник
В моем сценарии служба сборки не использовала ту же учетную запись пользователя, с которой я импортировал ключ
sn.exe
.После смены учетной записи на мою учетную запись администратора все работает просто отлично.
источник
Это решило мою проблему: открой свой VS проект
Дважды щелкните на Package.appxmanifest
Перейти на вкладку Упаковка
нажмите выбрать сертификат
нажмите настроить сертификат
выберите из файла и используйте example.pfx, это единство или что-либо еще созданное
источник
Я решил эту проблему для себя, изменив следующую строку в файле .csproj проекта Visual Studio:
Это выдало ошибку «невозможно импортировать»:
При изменении значения на false ошибка исчезла.
источник
Я получил ту же ошибку. В моем случае я попробовал все вышеперечисленное, но не смог получить результат.
Я наконец понял, что в моем случае причиной ошибки было то, что пароль сертификата не был введен или введен неправильно. Ошибка исчезла, когда я правильно и правильно ввел пароль. успешный
источник
К сожалению, ни один из упомянутых здесь подходов не работал для меня. Я должен зарегистрировать пару PFX в контейнере Docker, и мне нужно передать пароль через командную строку.
Поэтому я заново разработал
sn.exe -i <infile> <container>
команду в C #, используя RSACryptoServiceProvider . Исходный код и приложение находятся на GitHub в проекте SnInstallPfx .Приложение SnInstallPfx принимает ключ PFX и его пароль. Он автоматически вычисляет имя контейнера ключей (VS_KEY_ *) (заимствовано из исходного кода MSBuild) и устанавливает его в CSP со строгим именем.
Применение:
источник
Для кого используются бегуны GitLab:
./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"
(мне пришлось сначала остановиться и удалить)sn -i certificate.pfx VS_KEY_C***6
имя контейнера предлагается в выводе задания с ошибками на GitLab (вывод msbuild)
источник