2014-02-21 2 views
19

Итак, вот в чем проблема: мы решили купить сертификат подписи кода, мы купили его у Godaddy, который был в формате p12.Подписание сборок с сильным именем с использованием pfx и визуальной студии

После исследования выяснилось, что 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 

и выбранный замедленное подписания, но проект так и вновь не строить еще больше ошибок.

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

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

+0

spc - это формат файла unix для формата crl2pkcs7. См. Https://developer.mozilla.org/en/docs/Signing_an_executable_with_Authenticode – Henrik

ответ

21

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

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

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

+7

Это, безусловно, показало мне путь. Я дам дополнительную информацию для интересующихся. Что я сделал, исходя из предоставленной вами ссылки, является: без повторного запроса сертификата. с новым CSR я установил его с помощью 'certutil -importPFX filename.pfx AT_SIGNATURE', чтобы принудительно ввести параметр keyspec, а затем извлек сертификат из хранилища с помощью MMC. На этот раз сертификат работал с VS. Теперь у меня было сильное имя. Затем я использовал «signtool.exe» для подписи сборок и, наконец, добавил cert. Click-Once, и поэтому у меня есть все мои файлы, отображающие информацию нашей компании плюс подписанный установщик. Благодаря! – Ares

+0

@ Нет проблем! Рад, что он теперь работает на вас :) Спасибо за информацию; хорошо знать способ решить это, если мы столкнемся с тем же самым с внешним CA – SmithPlatts

+0

У меня также есть сертификат GoDaddy, и это решение тоже работало для меня (без необходимости новой CSR).Интересно, что сертификат уже работал на код VBA, а также перед реализацией этого решения у меня было несколько дополнительных шагов для завершения, как описано здесь: http://stackoverflow.com/questions/2815366/cannot-import-the-keyfile-blah-pfx -error-the-keyfile-may-be-password-protec – SlowLearner

6

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

+0

Простой, но работает! – Smartis

+0

Хм, интересно, как я мог попробовать это. Это мое последнее средство – user1747567

+0

Возможно, вам придется предоставить доступ к закрытому ключу, если вы поместите его в хранилище сертификатов Local Machine. Я нашел, что это правда, даже если вы являетесь локальным администратором на ПК. – RobV8R

3

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

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

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

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

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

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

13

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

  1. Открыть Командная строка с правами администратора.
  2. Тип команды: certutil -importPFX "<certFilepath>\<certFilename>.p12" AT_SIGNATURE (AT_SIGNATURE это то, что делает эту работу вместо [правой кнопкой мыши P12-файл] -> «Установить PFX»)
  3. Введите пароль вашего выбора.
  4. Открыть mmc.exe с правами администратора, Файл -> Добавить/Удалить оснастку ...
  5. Добавить «Сертификаты»
  6. Выберите «Учетная запись компьютера»
  7. Корень консоли/Сертификаты (локальный компьютер)/Personal/Certificates найдите сертификат, установленный на шаге 2.
  8. Щелкните правой кнопкой мыши «Cert/All Tasks/Export» -> «Далее»/«Да», экспортируйте закрытый ключ
  9. Перейти к «Обмен персональной информацией - PKCS № 12 (. PFX) '
  10. Снимите флажок «Включить все сертификаты ...». Важный! Если флажок VS будет выдавать это сообщение: «Не удается найти сертификат и закрытый ключ для дешифрования» при подписании.
  11. Установите флажок «Экспортировать все расширенные свойства» (необязательно).
  12. Вы можете проверить «Удалить закрытый ключ ...», если вы не планируете реэкспортировать в будущем.
  13. Отметьте пароль и введите пароль шага 3.
  14. Выберите путь к файлу и имя файла для экспортированного (.pfx) сертификата.
  15. Используйте экспортированный файл .pfx, чтобы подписать сборку/проект от VS.
  16. Создайте проект, чтобы убедиться, что pfx работает правильно.
+1

Это было! Самое главное, что мне не хватало шага, чтобы отменить «Включить все сертификаты ...» –

+0

Благодарим вас за этот ответ. – SoaperGEM

+0

Я пробовал это в VS 2015, но я все равно получаю ту же ошибку – user1747567

Смежные вопросы