编辑自2015年1月24日起:现在无法使用其他受信任的证书颁发机构.问答没有过时:
WinQual仍然拒绝签名:
当我们已经确定它是有效的数字签名时:
为了完整起见,我将离开其他人所做的编辑; 只是想指出他是多么的错.他可以忍受这种耻辱:
编辑截至2014年:现在可以使用其他受信任的证书颁发机构.问题和答案已经过时.
在2005年,我尝试与Microsoft建立WinQual帐户,因此我可以选择通过Windows错误报告(WER)自动提交的(如果有)故障转储文件.我不被允许拥有我的崩溃转储,因为我没有Verisign证书.相反,我有一个由Verisign子公司生成的更便宜的产品:Thawte.
您加入的方法是:您对它们提供的示例exe进行数字签名.这证明您是签署应用程序的同一签名者,他们从野外获得了崩溃转储.
在密码学上,需要私钥来在可执行文件上生成数字签名.只有该私钥的持有者才能为匹配的公钥创建签名.生成该私钥的人并不重要.这包括从以下位置生成的证书:
自签约
富国银行
DigiCert
SecureTrust
Trustware
QUOVADIS
去吧爸爸
委托
Cybertrust公司
GeoTrust的
GlobalSign的
科摩
Thawte的
威瑞信
然而,Microsof的WinQual只接受Verisign生成的数字证书.甚至Verisign的子公司也不够好(Thawte).
任何人都可以想到微软不想接受代码签名证书的任何技术,法律或道德原因吗?WinQual网站说:
为何Winqual会员资格需要数字证书?
数字证书有助于保护您的公司免受那些试图冒充您的员工或者对您的公司进行欺诈行为的个人的侵害.使用数字证书可以证明用户或组织的身份.
某种程度上,Thawte数字证书不安全吗?
两年后,我向WinQual发送了提醒通知,我一直在等待能够进入崩溃堆.WinQual团队的回应是:
你好,
感谢您的提醒.我们已通知相关人员这仍是请求.
2008年,我在微软支持论坛上提出这个问题,回复是:
我们目前只接受VeriSign证书.我们没有压倒性的要求来支持其他类型的证书.
接受其他类型的证书不是"设置"可能意味着什么?
如果签署WinQual.exe测试应用程序的密钥的指纹与签署可执行文件的指纹相同,那就是你遇到的崩溃转储:它已被证明 - 它们是我的崩溃转储,将它们交给我.
并不像是有一个特殊的API来检查Verisign数字签名是否有效,而不是所有其他数字签名.无论谁生成密钥,有效签名都有效.
微软可以自由地不信任签名者,但这与身份不同.
所以这是我的问题,任何人都可以想到为什么WinQual没有设置为支持数字签名的任何实际原因?
一个人认为答案是他们只是懒惰:
不是我知道,但我认为运行winQual系统的团队是一个现场团队,而不是一个开发团队 - 就像在个性和技能组合中一样,旨在维护现有系统.我可能错了.
他们不想做改变它的工作.但是,任何人都可以想到任何需要改变的事情吗?无论生成密钥的是什么,它都是相同的逻辑:"指纹是否匹配".
我错过了什么?
很高兴听到其他开发者的故事.这样我知道我并不孤单,这个问题可以作为微软改变的工具.即使我最初的意图是一个抱怨的咆哮,为了保持这个有效的StackOverflow问题,我正在寻找技术原因,为什么微软只能接受Verisign证书.
加密API并不关心颁发证书的公司名称是什么:它只关心签名者链返回受信任的根.
特别是微软可能没有使用已建立的加密基础设施,但仅限于Verisign?
如果有人可以指向任何博客条目,程序经理或开发人员解释原因,我或许会满意.
人们似乎忽略了我的问题.Windows已经具有代码基础结构,以确保根权限信任数字签名证书.这是我们签名的可执行文件上的数字签名的屏幕截图.
您可以看到我们的证书是由Thawte的代码签名机构证书签署的,而证书又由Thawte签署:
替代文字http://i34.tinypic.com/2hi2cr8.jpg
默认情况下,"thawte"证书随Windows发布:
替代文字http://i38.tinypic.com/ydfr.jpg
该Thawte完美服务器CA是够好的了,Windows和Internet Explorer的每个副本已经信任它.并且已经有一个已建立的API来检查证书是否有效(即信任).
当Winqual的人来了,他们将不得不去他们的出路,以避免检查正确的方式,而是推出自己的解决方案,硬编码只威瑞作为一个受信任的根.为什么他们会不顾一切地忽略其他受信任的root权限,即运行其代码的Windows机器上的权限,而是硬编码Verisign?
而不是去做其他人的方式做(Windows资源管理器,火狐,Chrome,IE浏览器,歌剧,CertMgr等),他们专门只允许威瑞信.我的问题是为什么.
Why would WER not accept code-signing certificates?
如果它只是:
因为最初写这篇文章的人并不知道正确的方法
而不是花很多时间调查正确的方法
他只是扔了一些东西
只是为了测试,他只对一个签名者进行了硬编码
完全有意回来并修复它
但代码现在正在运行
它没有被修复就上线了
并且没有人愿意承担破坏它的责任
并且没有人愿意花钱来解决它
没有足够的客户抱怨将其作为高优先级
即使有很多人抱怨,购买Verisign只需99美元
所以你不能放手去购买Verisign吗?
......那没关系.除了我不相信.我不相信它是生产的测试代码.我觉得这是一个有意识的,具体的决定,让他们忽略了其他签名者.他们这样做,并将继续只尊重威瑞信.
但对于我的生活,我想不出原因.
好吧,我刚刚发布了另一个请求,基本上告诉他们除非他们接受Comodo Code Signing证书,否则我们不会参加.
Microsoft联系我们告诉我们,他们希望我们查看有关Windows 7的报告,但我们无法登录,因为我们不使用Verisign.好的,你联系了我......我需要多少经过身份验证?
我联系了产品经理,我们会看到会发生什么.
并回答上面的半修辞问题 - 他们没有理由不能对其他签名的EXE进行身份验证.Windows做到了,IE做到了,代码已经存在.他们没有必要采取任何特殊措施来支持它.
更新:
在与微软代表交谈后,我被告知空白,你必须至少购买99美元的经验证书才能"验证"并获取你的错误报告.瘸.
我刚刚签约WinQual,我一直在考虑这个问题; 我想我现在有了答案.
简而言之:他们根本没有使用VeriSign作为证书:他们只是外包验证您身份的任务.
Microsoft不希望您在未事先验证身份的情况下访问WinQual站点.所以他们需要一个身份验证过程.
他们可能会有一个收费99美元的部门,并进行验证.但他们已经拥有VeriSign的大量股份,VeriSign已经拥有可以做到这一点的员工.因此,他们使用注册证书的过程来验证您的身份.它根本没有使用证书,它只是委托VeriSign完成验证你的任务.
需要注意的是,他们并不需要你继续保持VeriSign证书,让您的帐户:这只是一次过费用为加入的站点.
因为这是微软验证您的身份的情况下,他们信任VeriSign公司,因为他们有自己的手指馅饼,他们不信任科摩多这么多,他们希望你使用VeriSign公司的这一目的,而不是其他任何证书.从开发人员的角度来看,这似乎有点傻,但我可以从他们的角度来理解它.
完成代码签名和最近的Winqual注册后,这里有一些说明:
对于Winqual注册(注册),不会根据Winqual数据库检查您的签名本身.Winqual仅检查VeriSign的证书,证明VeriSign检查了您的身份.然后他们从您的签名中获取您的公司名称.
在下一步中,您必须创建一个或多个"产品映射文件"(使用Microsoft的工具)并将这些文件上载到Winqual.之后,Winqual服务器会针对所有地图文件检查数TB的崩溃数据库,并为您提供"事件"列表.(因此,您用于代码签名的签名非常无关紧要.)
微软也无法接受其他认证机构的技术原因.但是:他们将如何从中受益?还有一个特价商品计划,只需99美元即可从VeriSign获得一年的代码签名证书,如果将其与开发工具链或MSDN/TechNet会员的成本进行比较,则不一定非常昂贵.
在我们的案例中,从VeriSign获得证书非常简单且非常快 - 整个过程在两天内完成.(我们不在美国,所以我预计延迟.)[只是为了澄清:你自己生成你的签名,它包括一个company_private_key(用于签名)和一个company_public_key(用于验证你的代码签名).任何证书颁发机构(如VeriSign)都使用其私钥对您的company_public_key进行反签名.这使您的证书可以验证.]
我们不知道的是,威瑞信$ 99证书可用于代码签名,太(这是不是只是一个组织的ID).所以最初我们去了另一个CA进行代码签名.然后我们获得了Winqual注册的VeriSign证书.
Microsoft在WHDC和Winqual上发布了哪些签名提供程序可以接受哪种签名类型的信息.在从其他CA获得证书之前,你不能真正责怪他们不读这个,是吗?
希望这可能有助于揭示一些亮点.
同样的故事,我正在认证Win7 Logo的申请,以获得MS Partnership计划的积分.我买了Comodo代码签名证书.该应用程序通过了测试,现在我正在尝试建立一个Winqual帐户,并且在最初因为必须购买另一个签名证书而生气后,我花了5天时间试图以99美元的价格实际购买这个"组织证书".没办法," VeriSign SSL证书注册暂时不可用.请稍后再试. ",支持可能也是我遇到的最糟糕的.OMG ...请至少尝试阅读问题描述甚至尝试重现这些步骤,不要只是给我一些愚蠢的知识库解决另一个问题.或者只是说服务不可用,它将在5天内提供.太令人沮丧......
只是更新,如果有人有同样的问题,我终于得到了注册问题的答案,并下了订单.(我想你需要在科技支持中找到合适的人:)
"我们诚挚地道歉.由于组织证书注册中的错误而发生此错误.如果在注册的"证书信息"(第3步)部分中输入了除美国以外的任何国家/地区,则会出现此错误.此问题已升级现在正在修理它的工程师.在此期间,您可以执行以下操作来解决错误并完成注册:在注册的"证书信息"部分,输入"US"和州所有其他信息都可以是正确的.一旦注册完成,请继续向我们发送您的证书的订单号以及贵公司的正确国家和州值以回复此电子邮件.我们将编辑在我们的系统中订购并在我们签发证书之前为您输入正确的公司和国家/地区值.我们发给您的证书将包含正确的信息."