Подтвердить что ты не робот

Подписание сборок с сильным именем с помощью 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 рекомендует в качестве альтернативы, но, хотя он подписывает сборку, он не обеспечивает сильное имя, которое мне нужно.

Я также попытался извлечь сертификат из pfx в snk, используя

    sn -p something.pfx key.snk

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

Риторический вопрос: почему это так сложно? У многих людей есть проблемы с этим.

Кто-нибудь может помочь?

4b9b3361

Ответ 1

Я только что столкнулся с той же проблемой, и в этой статье сохранил мой бекон!

Все, что мне нужно было сделать, это воссоздать мой сертификат подписи кода с KeySpec, установленным на 2 (AT_SIGNATURE), и теперь VS (2013) импортирует и подписывает мою сборку без ошибок!:-D

Я понимаю, что это немного отличается от вашего сценария, но я надеюсь, что это может каким-то образом помочь...

Ответ 2

Я владею сертификатом Comodo (.p12) и столкнулся с той же проблемой и решил его на основе ответа @SmithPlatts и комментария @Ares. Вот подробное пошаговое руководство для тех, кто не разбирается (например, я) с сертификатами:

  • Откройте командную строку с правами администратора.
  • Команда типа: certutil -importPFX "<certFilepath>\<certFilename>.p12" AT_SIGNATURE (AT_SIGNATURE делает эту работу вместо [Правого щелчка .p12 файла] → "Установить PFX" )
  • Введите пароль по вашему выбору.
  • Откройте файл mmc.exe с правами администратора, File → Add/Remove Snap-in...
  • Добавить "Сертификаты"
  • Выберите "Учетная запись компьютера"
  • В корне консоли/сертификатах (локальный компьютер)/Personal/Certificates найдите сертификат, установленный на шаге 2.
  • Щелкните правой кнопкой мыши Cert/All Tasks/Export → Далее/Да, экспортируйте закрытый ключ
  • Перейдите к разделу "Обмен персональной информацией - PKCS # 12 (.PFX)"
  • Снимите флажок "Включить все сертификаты...". Важный! Если флажок VS будет выдавать это сообщение: "Не удается найти сертификат и закрытый ключ для дешифрования" при подписании.
  • Установите флажок "Экспортировать все расширенные свойства" (необязательно).
  • Вы можете проверить "Удалить закрытый ключ...", если вы не планируете реэкспортировать в будущем.
  • Отметьте пароль и введите пароль шага 3.
  • Выберите путь к файлу и имя файла для экспортированного (.pfx) сертификата.
  • Используйте экспортированный файл .pfx для подписи сборки/проекта из VS.
  • Создайте проект, чтобы убедиться, что pfx работает правильно.

Ответ 3

У меня была эта проблема и исправлена ​​ее, открыв Visual Studio в качестве администратора.

Ответ 4

Я решил эту проблему воссоздать PFX, используя openssl с опцией -keysig.

openssl pkcs12 -export -out "MyPfx.pfx" -keysig -inkey "MyKey.key" -in "MyCer.cer"

Ответ 5

Забежал в эту проблему, а также, возможно, связанные с ней проблемы, о которых люди упоминали.

Работая в корпоративной среде в отделе разработки в более крупном ИТ-отделе, у меня нет полных разрешений локального администратора. Таким образом, когда я запускаю VS, он не запускается как локальный администратор.

Как только я установил свой ярлык для запуска VS 2013/2015, проблемы, которые я видел с пением сборки... исчезли.

Это тоже может сэкономить время, а также вытащить волосы из корней.