如何为Windows 8应用商店应用程序对XML文件进行代码签名

4
为了在Windows 8应用程序中使用某些功能(例如documentsLibrary),开发人员必须使用SHA2从Microsoft EV签署XML文件,根据仪表板信息:
特定的专业应用程序只能从已经进行过额外身份验证证明的开发者帐户提交。通过下载并使用EV代码签名证书签署XML文件可以获得这种EV状态。大多数开发者帐户不需要此额外状态。

http://msdn.microsoft.com/en-us/library/windows/apps/jj863494.aspx

此外,声明documentsLibrary功能的应用程序只能由开发人员帐户提交,这些开发人员帐户可以证明他们已从证书颁发机构(CA)获得扩展验证(EV)代码签名证书。通过使用Symantec或Digicert获得有效的EV代码签名证书,可以通过从Windows Store门户下载并签署XML文件来确认EV状态。我拥有XML文件和Symantec的证书,但是我找不到任何关于如何对XML文件进行代码签名的文档。我能找到的最接近的是Symantec网站上关于signtool.exe的文章。

https://knowledge.verisign.com/support/code-signing-support/index?page=content&actp=CROSSLINK&id=SO20528

但是当我尝试使用signtool与微软的XML文件一起使用时,会出现错误“无法签名此文件格式,因为它未被识别”。
所以我的问题是,如何使用我的证书对此XML文件进行签名,以便我可以将我的应用程序上传到商店?
2个回答

4
根据MSDN建议,您应该使用Code Signing Tool for Xml
Token的用法:
SignXml.exe TOKEN SHA256 {publicCert.cer} {signable xml} 

Pfx使用方法:

SignXml.exe PFX SHA256 {cert.pfx} {publicCert.cer} {signable xml}

如果您只有.pvk文件而没有.pfx文件,可以使用此工具进行转换:pvk2pfx.exe(来自Windows平台SDK)。
示例:pvk2pfx.exe -pvk myCertificate.pvk -spc myCertificate.cer -pfx myCertificate.pfx -po pa$$word

EV证书不带pfx或pvk。我一直在尝试TOKEN使用,它可以无错误运行,但上传时会提示签名方法无效。这里有另一个遇到同样问题的人: http://social.msdn.microsoft.com/Forums/windowsapps/en-US/a7cc17e1-d77e-4b97-b069-37397b9f9ff3/how-to-code-sign-an-xml-file-for-windows-8-store-apps?forum=windowsstore - Lawrence Johnson
你是否安装了SafeNet客户端? - crea7or
你是否导出并使用了以 .der 格式的公共证书? - crea7or
我正在使用 .der 格式作为公共证书(publicCert.cer)。 - Lawrence Johnson
提醒任何遇到此问题的人,我们通过重新生成SHA2证书来解决了这个问题。它们来自digicert的预编译版本为SHA-1,尽管如此,CodeSignForXml.exe仍然允许您编译为SHA-256而不会出现任何警告。为了重新生成证书,我们不得不联系digicert并重置账户。 - Lawrence Johnson
显示剩余9条评论

0
请尝试使用此工具对您的 XML 文件进行签名:http://www.signfiles.com/xml-signer/。Windows SDK 中的 Signtool 只能通过向文件添加附加部分来签署二进制文件,例如可执行文件或 DLL。

这个程序可以正常运行,但当我试图将其上传到微软时,他们说:“验证错误:您必须使用SHA2签署XML文件。” 我无法找到在该应用程序中使用SHA2的方法。 - Rory Harvey
我被SHA2要求卡住了。codesignforxml.codeplex.com上的应用程序完全没有文档。它是命令行,我已经尝试以10种不同的方式运行它,但唯一的错误输出是空引用异常。 - Lawrence Johnson
我找到了一种方法,通过安装用户证书来创建文件,但是应用商店拒绝它,说它不是可接受的签名方法。 - Lawrence Johnson
能否请管理员将此答案删除?原始答案不正确,甚至 OP 对于有效工作的链接的回应也无法工作。要么需要更多使用说明,要么需要进一步详细说明。这里有另一个用户遇到了使用所提及应用程序时的问题:http://msdn.microsoft.com/en-us/library/windows/desktop/aa388170(v=vs.85).aspx 我不想开一个新的问题,因为我的问题与此相同。 - Lawrence Johnson
是的,这是我们花了很多钱购买的Digicert EV证书。 - Lawrence Johnson
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接