Подписание сборок со строгим именем с помощью pfx и visual studio
Итак, вот проблема: мы решили купить сертификат подписи кода, мы купили один из Godaddy, который был в формате p12.
после исследования я узнал, что p12 и pfx-это одно и то же с другим расширением, поэтому я переименовал его в pfx. У меня также есть файлы spc и p7c, но я понятия не имею, что с ними делать.
в любом случае, я попытался добавить свой сертификат в мое решение Visual Studio 2013, и вот что я получить:
-
сначала я получаю запрос пароля и после ввода пароля я получение сообщения об ошибке
"An attempt was made to reference a token that does not exist."
-
при второй попытке установить pfx я не получаю никаких подсказок или сообщений об ошибках вообще, но когда я строю, я получаю ошибку
"Cannot import the following key file: something.pfx The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_33FA18307607ECFB"
-
поэтому я делаю это с помощью
sn -i something.pfx VS_KEY_33FA18307607ECFB
, которое завершается без ошибок, но когда я пытаюсь чтобы построить снова, я получаю ту же самую ошибку с тем же именем контейнера.
"Cannot import the following key file: something.pfx ....
Я попытался использовать signtool, который рекомендует поддержка Goddady в качестве альтернативы, но, хотя он подписывает сборку, он не предоставляет strongnaming, который мне нужен.
Я также попытался извлечь сертификат из pfx в snk, используя
sn -p something.pfx key.snk
и выбрана отложенная подпись, но проект не был построен снова с еще большим количеством ошибок.
риторический вопрос: почему это так тяжело? У многих людей с этим проблемы.
может кто-нибудь помочь?
5 ответов
Я только что столкнулся с такой же проблемой и в этой статье спас мою шкуру!
все, что мне нужно было сделать, это воссоздать мой сертификат подписи кода с KeySpec, установленным на 2 (AT_SIGNATURE), и теперь VS (2013) импортирует и подписывает мою сборку без ошибок! :- D
Я понимаю, что это немного отличается от вашего сценария, но я надеюсь, что это может помочь в некотором роде ...
У меня есть Comodo (.P12) сертификат и столкнулся с той же проблемой и решил ее на основе ответа @SmithPlatts и комментария @Ares. Вот подробное пошаговое руководство для тех, кто не подкован (как я) с сертификатами:
- открыть командную строку с правами администратора.
- команды типа:
certutil -importPFX "<certFilepath>\<certFilename>.p12" AT_SIGNATURE
(AT_SIGNATURE-это то, что делает эту работу вместо [щелкните правой кнопкой мыши .P12 файл]--> 'Install PFX') - введите пароль по вашему выбору.
- открыть mmc.исполняемый с правами администратора, File-->Add/Remove Snap-in...
- Добавить 'Сертификаты'
- Выберите "Учетная Запись Компьютера"
- В разделе корневой каталог консоли / сертификаты (локальный компьютер)/личные / сертификаты найдите сертификат, установленный на Шаге 2.
- щелкните правой кнопкой мыши сертификат / все задачи / экспорт-- > далее / Да, экспортируйте закрытый ключ
- для обмена личной информацией - PKCS #12 (.Pfx-файл)'
- снимите флажок " Включить все сертификаты...'. Важно! Если проверено VS выдаст такое сообщение: "не удается найти сертификат и закрытый ключ для расшифровки" при подписании.
- установите флажок "экспортировать все расширенные свойства" (необязательно).
- вы можете проверить удалить закрытый ключ...- если в будущем вы не планируете реэкспорт.
- отметьте пароль и введите пароль шага 3.
- выбрать путь к файлу и имя файла для экспорта (.сертификат pfx).
- использовать на экспорт .pfx-файл для подписи вашей сборки/проекта от против.
- построить проект, чтобы убедиться, что файл работает правильно.
Я решил эту проблему, воссоздавая PFX с помощью openssl с опцией-keysig.
openssl pkcs12 -export -out "MyPfx.pfx" -keysig -inkey "MyKey.key" -in "MyCer.cer"
столкнулся с этой проблемой, а также, возможно, связанные с этим проблемы, на которые ссылались люди.
работая в корпоративной среде в отделе разработки в более крупном ИТ-отделе, у меня нет полных разрешений локального администратора. Таким образом, когда я запускаю VS, он не запускается как локальный администратор.
Как только я настроил свой ярлык для запуска VS 2013/2015, проблемы, которые я видел с пением сборки...исчез.
Это тоже может сэкономить кому-то время, как так же, как от вырывания волос из корней.