"Явная подпись XML недопустима"
ОС: Windows 7 64 бит с использованием Visual Studio Pro 2012 с установленным .NET 4.5.
Я использовал параметр "Опубликовать" в Visual Studios и обеспечил, чтобы я нажал кнопку "Подписать манифест clickOnce" и "Подписать сборку". Он все равно не будет работать на другом компьютере и говорит, что у меня нет правильной подписи XML. Я вставил сообщение об ошибке ниже.
Я также читал: Как переместить пакет развертывания ClickOnce, Должен ли я подписать манифест ClickOnce?. VS2012.NET 4.0 Clickonce VSTO CryptographicException: SignatureDescription не может быть создан для предоставленного алгоритма подписи и нескольких других.
Мне нужно иметь возможность развернуть мою программу на .NET 4.0 как минимум, и у меня нет доступа к другой версии Visual Studios. Спасибо в Advance!
полная ошибка ниже:
ИНФОРМАЦИЯ О ВЕРСИИ ПЛАТФОРМЫ Windows: 5.1.2600.196608 (Win32NT) Общий язык Время выполнения: 2.0.50727.3603 System.Deployment.dll: 2.0.50727.3053 (netfxsp.050727-3000) mscorwks.dll: 2.0.50727.3603 (GDR.050727-3600) dfdll.dll: 2.0.50727.3053 (netfxsp.050727-3000) dfshim.dll: 4.0.31106.0 (Main.031106-0000)
ИСТОЧНИКОВ URL-адрес развертывания: файл:///C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application
РЕЗЮМЕ ОШИБКИ Ниже приведено краткое описание ошибок, подробности этих ошибок перечислены позже в журнале. * Активация C:\Documents and Settings\Administrator\Desktop\EatonWizard.application привела к исключению. Были обнаружены следующие сообщения об ошибках: + Манифест чтения исключения из файла:///C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application: манифест может быть недействительным или файл не может быть открыт. + Явная подпись XML недопустима. + SignatureDescription не может быть создан для предоставленного алгоритма подписи.
РЕЗЮМЕ НЕИСПРАВНОСТИ КОМПОНЕНТА МАГАЗИНА Ошибка транзакции не обнаружена.
ПРЕДОСТОРОЖНОСТИ Во время этой операции не было предупреждений.
СОСТОЯНИЕ ПРОГРЕССА РАБОТЫ * [10/10/2012 2:05:02 PM]: началась активация C:\Documents and Settings\Administrator\Desktop\EatonWizard.application.
ДЕТАЛИ ОШИБКИ В ходе этой операции были обнаружены следующие ошибки. * [10/10/2012 2:05:02 PM] System.Deployment.Application.InvalidDeploymentException(ManifestParse) - манифест чтения исключений из файла:///C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application: манифест может быть недействительным или файл не может быть открыт. - Источник: System.Deployment - Трассировки стека: в System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) в System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubsStoreStore subStore, Uri & sourceUri, TempFile & TempFile, SubscriptionState & subState, уведомление об уведомлении IDownload, опции DownloadOptions, ServerInformation & serverInformation) в System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubsStoreStore subStore, Uri & sourceUri, TempFile & TempFile, SubscriptionState & subState, уведомление об уведомлении IDownload, опции DownloadOptions) в System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String & errorPageUrl) в System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(состояние объекта) --- Внутреннее исключение --- System.Deployment.Application.InvalidDeploymentException(SignatureValidation) - Явная подпись XML недопустима. - Источник: System.Deployment - Трассировки стека: в System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) в System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) --- Внутреннее исключение --- System.Security.Cryptography.CryptographicException - SignalDescription не может быть создана для поставляемого алгоритма подписи. - Источник: System.Security - Трассировки стека: в System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(ключ асимметричного алгоритма) в System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(Асимметричный алгоритм и подписьKey) в System.Deployment.Internal.CodeSigning.SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags) в System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s)
ДЕТАЛИ ОПЕРАЦИИ КОМПОНЕНТНОГО МАГАЗИНА Информация о транзакции недоступна.
Ответы
Ответ 1
У меня была такая же проблема сегодня. Вот как я решил:
Что вызвало проблему:
Мы создали проект clickonce с использованием vs2012 и framework 4.5.
Затем мы изменили целевую структуру на 4.0 (клиент попросил).
Проблема: Framework 4.5 использует алгоритм SHA-256 для подписи, а 4.0 использует SHA-1. Когда мы изменили целевую структуру на 4.0 и vs2012 не изменили алгоритм.
Решение. Измените алгоритм вручную, создав новый сертификат.
Переход к свойствам проекта → подписание
Вы увидите алгоритм, который используется в "Алгоритм подписи". Вы можете создать новый тестовый сертификат, а затем вы заметите, что он изменился на 'sha1RSA'
Ответ 2
Заметьте, я бы добавил это в качестве комментария, но из-за глупых правил репутации я могу только добавить ответ!
Остерегайтесь новых сертификатов подписи кода
У меня была эта проблема недавно, потому что наш сертификат подписи кода нуждался в обновлении. Поэтому, следя за тем, что Microsoft не исправляет версию XP Framework 4 для работы с сертификатами SHA2 во время развертывания ClickOnce, я сказал всем моим проектам clickonce использовать новый сертификат подписи кода.
Как я также делаю обновления на основе кода приложения, а не просто позволяю Microsoft обрабатывать его, чтобы он стал более бесшовным для конечного пользователя без необходимости нажатия кнопок и в стиле моего приложения.
Тем не менее, я попал в ошибку, когда моя программа не сообщала ошибку манифеста, вместо этого она просто висела (мой плохой!). Чтобы получить обновление после работы до 3 утра, чтобы обнаружить эту проблему, мне пришлось создать временный сертификат, выпущенный Visual Studio. Проблема с этим? Обновления кода уже неактивны, потому что microsoft установил глупый диалог, поскольку издатель неизвестен!
Поэтому моя самая большая проблема заключается в том, что да, хорошо, XP не поддерживается с понедельника, но это не значит, что Framework 4 не должен принимать новые сертификаты, если это то, что они нажимают на всех. Microsoft даже активно участвует в этом нажатии!
Единственный рабочий ответ, как указано выше, вы ДОЛЖНЫ использовать Visual Studio для создания ненадежного временного сертификата, который является смешным!!! (У меня все еще есть надежда, что, возможно, я не нашел правильный способ использования нового сертификата)