【问题标题】:"Manifest XML signature is not valid"“清单 XML 签名无效”
【发布时间】:2012-10-10 19:24:11
【问题描述】:

操作系统:Windows 7 64 位,使用安装了 .NET 4.5 的 Visual Studio Pro 2012。

我在 Visual Studios 中使用了“发布”选项,并确保我单击了对 clickOnce 清单进行签名并为程序集签名。它仍然无法在另一台计算机上运行,​​并说我没有有效的 XML 签名。我在下面粘贴了错误消息。

我也读过:How to move a ClickOnce deployment packageDo I have to sign my ClickOnce manifest?VS2012 .NET 4.0 Clickonce VSTO CryptographicException: SignatureDescription could not be created for the signature algorithm supplied 和其他几个。

我至少需要能够在 .NET 4.0 上部署我的程序,并且我无法访问其他版本的 Visual Studios。提前致谢!

下面的完整错误:


平台版本信息 视窗: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)

来源 部署地址:file:///C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application

错误摘要 以下是错误摘要,这些错误的详细信息在日志后面列出。 * C:\Documents and Settings\Administrator\Desktop\EatonWizard.application 的激活导致异常。检测到以下故障消息: + 从 file:///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) - 从 file:///C:/Documents%20and%20Settings/Administrator/Desktop/EatonWizard.application 读取清单时出现异常:清单可能无效或文件无法打开。 - 来源:System.Deployment - 堆栈跟踪: 在 System.Deployment.Application.ManifestReader.FromDocument(字符串 localPath,ManifestType manifestType,Uri sourceUri) 在 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore、Uri& sourceUri、TempFile& tempFile、SubscriptionState& subState、IDownloadNotification 通知、DownloadOptions 选项、ServerInformation& serverInformation) 在 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore、Uri& sourceUri、TempFile& tempFile、SubscriptionState& subState、IDownloadNotification 通知、DownloadOptions 选项) 在 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri,布尔 isShortcut,字符串 textualSubId,字符串 deploymentProviderUrlFromExtension,BrowserSettings browserSettings,字符串和 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(字符串 localPath,ManifestType manifestType,Uri sourceUri) --- 内部异常 --- System.Security.Cryptography.CryptographicException - 无法为提供的签名算法创建 SignatureDescription。 - 来源:System.Security - 堆栈跟踪: 在 System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(非对称算法密钥) 在 System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(非对称算法和签名密钥) 在 System.Deployment.Internal.CodeSigning.SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags) 在 System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s)

组件商店交易详情 没有可用的交易信息。

【问题讨论】:

    标签: c# deployment visual-studio-2012 xml-signature


    【解决方案1】:

    我今天也遇到了同样的问题。我就是这样解决的:

    导致问题的原因: 我们使用 vs2012 和框架 4.5 创建了一个 clickonce 项目。 然后我们将目标框架更改为 4.0(客户要求)。

    问题是:Framework 4.5 使用 SHA-256 算法进行签名,而 4.0 使用 SHA-1。当我们把目标框架改成4.0,vs2012没有改算法的时候。

    解决方案:手动更改算法,生成新证书。

    转到项目属性 -> 签名

    您将看到“签名算法”中使用的算法。您可以创建一个新的测试证书,然后您会注意到它更改为“sha1RSA”

    【讨论】:

    • +1 - 宝石!网上有很多建议。对我来说,这就是答案。
    • 确实,很高兴找到这么准确的信息,而且这么快
    • 嗯...使用 2010 和网络 4.0 客户端配置文件,Sha256 在我的清单中出现了几次(虽然主要是 sha1)——似乎在旧版本的所有相同位置出现有效与无效的新版本相比(我们更新了我们的密钥,一些客户现在安装它时遇到问题,不知道为什么)。
    • 我了解这里所说的内容,但这不是答案。正确的有效证书不能应用于框架 4.0 下的代码签名。这是由 Visual Studio 生成的自签名证书,用于部署给客户时会产生安全警告。 ClickOnce 真的会向用户发出警告,这会导致用户对部署的产品缺乏信心。从现在开始,任何获得适当许可的代码签名证书都将是 SHA256
    【解决方案2】:

    注意,我会将此添加为评论,但由于愚蠢的声誉规则,我只能添加答案!


    注意新的代码签名证书

    我最近遇到了这个问题,因为我们的代码签名证书需要更新。因此,由于微软没有在 ClickOnce 部署期间修补 XP 版本的 Framework 4 以使用 SHA2 证书这一事实,我告诉我所有的 clickonce 项目使用新的代码签名证书。

    因为我还对应用程序进行基于代码的更新,而不是让 Microsoft 处理它,因此对于最终用户而言,它是一种更加无缝的体验,而无需他们按我的应用程序的样式按下按钮。

    但是,我遇到了一个错误,我的程序没有报告清单错误,而是挂起(我的错!)。为了在工作到凌晨 3 点后得到更新以发现这个问题,我不得不创建一个由 Visual Studio 颁发的临时证书。那有什么问题吗?代码更新不再是无缝的,因为微软提出了一个愚蠢的对话框,因为发布者是未知的!

    所以我最担心的是,是的,好吧,据说从星期一开始就不支持 XP 了,但这并不意味着 Framework 4 不应该接受新证书,如果这是他们向所有人推送的内容。微软甚至积极参与了这一推动!

    唯一可行的答案是如上,您必须使用 Visual Studio 创建一个不受信任的临时证书,这太荒谬了!!! (我还有希望,也许我没有找到正确的方法来使用新证书)

    【讨论】:

    • 嗯.. 我也更新了我的证书 - 但我遇到此问题的客户使用的是 Windows 7 (x64)...
    • 确保您拥有 4.5.1 框架及其所有更新。如果您只有框架 4,那么您将体验到这一点。
    • 当然,您不能一夜之间更改证书。我不明白你为什么抱怨这个,因为它会带来巨大的安全风险。
    • 其实你可以换个证书。但除此之外,您显然错过了 XP 上的最后一个框架不支持 SHA2 (sha256) 证书的观点,尽管他们知道他们将在一段时间内删除 SHA1。因此,在一年内,所有 XP 签名的应用程序都将不再工作并且不能重新签名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    相关资源
    最近更新 更多