Сертификат подписчика ClickOnce недействителен для подписи при использовании makecer/pvk2pfx

Мой неожиданный сертификат, созданный с помощью makecer/pvk2pfx, неожиданно выдает ошибку при попытке опубликовать приложение ClickOnce. Это работало нормально только на прошлой неделе...

Сообщение об ошибке:

Ошибка 2 Произошла ошибка при подписании: не удалось подписать bin\Debug\app.publish\setup.exe. Ошибка SignTool: сертификат подписавшего недействителен для подписи. Ошибка SignTool: при попытке подписания произошла ошибка: bin\Debug\app.publish\setup.exe

Когда я использую опцию "Создать тестовый сертификат" на вкладке "Подписание", сертификат работает нормально, и приложение успешно опубликовано.

При создании сертификата вручную с помощью makecer/pvk2pfx я следую инструкциям MSDN

Когда я удаляю свой старый сертификат, созданный вручную, создаю новый с помощью makecer/pvk2pfx и пытаюсь использовать тот, который я получаю с той же ошибкой.

Это приложение WPF, предназначенное для.NET 4, и все это в VS 2010...

Есть идеи?

3 ответа

Решение

Это сработало для меня после того, как я указал длину сертификата больше 1024:

makecert -sv MyApp.pvk -n "CN=MyCompany" -len 2048 MyApp.cer -r
pvk2pfx -pvk MyApp.pvk -spc MyApp.cer -pfx MyApp.pfx -po MyPassword

Microsoft выпустила обновление, которое затрагивает все сертификаты, имеющие ключ RSA длиной менее 1024 бит.

http://support.microsoft.com/kb/2661254

После использования параметра -r (Создать самозаверяющий сертификат) с makecert сертификат pfx, сгенерированный с помощью pvk2pfx, теперь работает для публикации ClickOnce... точно не знаю, что здесь произошло, так как старый ключ, который не был "самоподписанным", работал нормально для долго...

Точные команды, которые я использовал для создания рабочего сертификата pfx...

makecert -sv MyApp.pvk -n "CN=MyCompany" MyApp.cer -r

pvk2pfx -pvk MyApp.pvk -spc MyApp.cer -pfx MyApp.pfx

Я просто потратил около 4 часов на это.

У меня был проект VS 2013, который я мог подписать с помощью (сгенерированного VS) файла pfx, но тот же сертификат не работал с использованием SignTool, независимо от того, что я делал.

Затем я начал делать новые сертификаты, используя MakeCert и Pvk2Pfx, и это тоже не сработало. Я попытался изменить шифрование с SHA1 на SHA512, изменить длину ключа от 256 до 2048 (как предложено в другом месте), изменить версию SignTool и т. Д. И т. Д.

Я должен был проверить 1000 различных ссылок, содержащих "Сертификат подписавшего не действителен для подписи".

Итак, в соответствии с предложениями о том, чтобы не просто сказать "спасибо" в посте - с чем я согласен - я суммирую основные вещи, которые, скорее всего, решат проблему. Все это основано на создании нового файла pfx; генерируемый VS не будет использоваться.

  1. Создайте свой .cer а также .pvk файлы с помощью MakeCert с -len переключатель установлен как минимум на 1024 - или, что лучше, на будущее - на 2048 - и самое главное -r переключатель, который самостоятельно подписывает сертификат. Я явно добавил дату окончания (используя -e 12/31/2039) и алгоритм шифрования SH256 (-a SHA256). Я предлагаю добавить пароль.
  2. Создайте свой .pfx файл из .cer а также .pvk файлы, использующие Pvk2Pfx со стандартными / стандартными ключами.
  3. Используйте SignTool, чтобы подписать сборку, используя -p {YourPassword} соответствующий пароль, предоставленный MakeCert.

Я надеюсь, что это кратко и ясно.

Другие вопросы по тегам