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

"Явная подпись 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)

ДЕТАЛИ ОПЕРАЦИИ КОМПОНЕНТНОГО МАГАЗИНА   Информация о транзакции недоступна.

4b9b3361

Ответ 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 для создания ненадежного временного сертификата, который является смешным!!! (У меня все еще есть надежда, что, возможно, я не нашел правильный способ использования нового сертификата)