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