WinQual:为什么WER不接受代码签名证书?

29
< p >< em >截至2015年1月24日编辑:现在无法使用其他可信证书颁发机构。问题和答案仍然有效:

WinQual仍然拒绝签名:

enter image description here

当我们已经确认这是一个有效的数字签名时:

enter image description here

为了完整起见,我将保留下面其他人所做的编辑;只是为了指出他是多么错误。他可以忍受那种羞耻:


截至2014年的编辑:现在可以使用其他可信证书颁发机构。问题和答案已过时。


在2005年,我尝试与微软建立WinQual账户,以便可以通过Windows错误报告(WER)自动获取我们(如果有的话)的崩溃转储文件。但由于我没有Verisign证书,因此无法获得我的崩溃转储文件。相反,我拥有一个更便宜的证书,由Verisign子公司Thawte生成。


你加入的方法是:你需要在他们提供的样本exe上进行数字签名。这证明了你是与他们从野外获取崩溃转储的应用程序相同的签名者。
从密码学角度来看,在可执行文件上生成数字签名需要私钥。只有持有该私钥的人才能为相应的公钥创建签名。生成该私钥的人无关紧要,包括以下生成的证书:
- 自签名 - 威尔斯·法戈 - DigiCert - SecureTrust - Trustware - QuoVadis - GoDaddy - Entrust - Cybertrust - GeoTrust - GlobalSign - Comodo - Thawte - 维信诺

微软的WinQual只接受由Verisign生成的数字证书。甚至连Verisign的子公司(如Thawte)也不行。

有人能想到微软不想接受代码签名证书的技术、法律或道德原因吗? WinQual网站上说:

为什么需要数字证书才能成为Winqual会员?

数字证书有助于保护您的公司免受试图冒充贵公司员工或以其他方式对贵公司实施欺诈行为的个人的侵害。使用数字证书可以为用户或组织提供身份证明。

难道Thawte的数字证书不安全吗?


两年后,我向WinQual发送了一封提醒通知,希望能够获取我的崩溃转储文件。WinQual团队的回复是:

您好,

感谢您的提醒。我们已经通知相关人员,这仍然是一个请求。


在2008年,我在Microsoft支持论坛上提出了这个问题,回复是:

我们只配置接受VeriSign证书。我们没有遇到过大量需要支持其他类型证书的情况。

不"设置"接受其他类型证书意味着什么?

如果签署WinQual.exe测试应用程序的密钥指纹与你在野外收到的可执行文件的崩溃转储所签署的密钥指纹相同:已经被证明,它们是我的崩溃转储,请把它们给我。

并且,这并不像有一种特殊的API可以检查Verisign数字签名是否有效,而不是所有其他数字签名。无论谁生成密钥,有效的签名都是有效的。

Microsoft是自由的,不信任签名者,但这与身份不同。


所以我的问题是,有没有人能想到任何实际的原因,为什么WinQual没有设置支持数字签名?一个人推测答案是因为他们懒:
“不是我知道但我会假设管理winQual系统的团队是一个运作中的团队而不是开发团队——也就是说,个性和技能集更适合于维护现有系统。虽然我可能错了。”
他们不想做改变它的工作。但是有人能想到需要改变什么吗?无论生成密钥的原因是什么,逻辑都是相同的:“指纹是否匹配”。
我错过了什么?

更新

听到其他开发者的故事很好。这样我知道我不是孤单的,而且这个问题可以成为微软改变的工具。即使我的初衷只是抱怨,为了让这个StackOverflow问题有效,我正在寻找一个技术原因为什么微软只能接受Verisign证书。

加密API并不关心颁发证书公司的名称:它只关心签名者链是否可追溯到可信任的根。

可能会出现什么情况,导致微软特别使用已建立的加密基础设施,而限制自己只能使用Verisign呢?

如果有人能指出任何博客文章,在其中一个程序经理或开发人员解释为什么,我可能会感到满意。


更新二

人们似乎没有理解我的问题的要点。Windows已经拥有代码基础设施,可以确保数字签名证书被根权限信任。这是我们签署的可执行文件上数字签名的截图:

您可以看到我们的证书是由Thawte的代码签名授权证书签署的,而该证书又由Thawte签署:

alt text

而"thawte"证书默认随Windows一起发货:

alt text

Thawte Premium Server CA足够好,以至于每个Windows和Internet Explorer副本都已经信任它。而且已经有一个既定的API来检查证书是否有效(即受信任)。
当WinQual团队出现时,他们本应该努力以正确的方式进行检查,而不是自己开发解决方案,只将Verisign硬编码为受信任根。为什么他们要费尽心思地忽略其他可信任的根机构(这些机构已在运行其代码的Windows计算机上提供),而是硬编码Verisign?
与其他人做法不同(如Windows Explorer、Firefox、Chrome、Internet Explorer、Opera、CertMgr等),他们明确只允许Verisign。我的问题是为什么。
WER为什么不接受代码签名证书?
如果只是:
  • 因为最初编写代码的人并不知道正确的方法
  • 而且他不想花很多时间研究正确的方法
  • 所以他随便写了一些代码
  • 只是为了测试,他硬编码了一个签名者
  • 完全有意回来修复它
  • 但现在代码正在工作
  • 它没有被修复就上线了
  • 没有人愿意为此负责
  • 也没有人想要花钱来修复它
  • 没有足够多的客户投诉使其成为高优先级事项
  • 即使有很多人投诉,只需要花99美元购买Verisign证书
  • 那么你不能就这样放手让我们购买Verisign证书吗?

...如果真是这样,那就没问题了。只是我不相信这个故事。我感觉他们忽略其他签名者是出于有意的、具体的决定。他们只会承认Verisign。

但我想不出原因。


现在无法使用其他受信任的证书颁发机构。您是不是想说“现在可以”?获取获取代码签名证书页面列出了四个供应商。问题仍然存在:为什么只有这四个? - Edward Brey
为了让事情更加混乱,sysdev注册页面只列出了两个供应商。 - Edward Brey
8个回答

14

好的,我刚刚发布了另一个请求,基本上告诉他们,除非他们接受 Comodo 代码签名证书,否则我们不会参与。

微软联系我们告诉我们有关Windows 7的报告需要我们查看,但我们无法登录,因为我们不使用Verisign。好吧,你联系了我... 我还需要更多的认证吗?

我已经联系了产品经理,我们将看看会发生什么。

并回答您上面半是反问的问题-他们没有理由不能验证其他签名的EXE。Windows做到了,IE也做到了,代码已经在里面。他们不必做任何特殊的支持。

更新:

与微软代表交谈后,我被直截了当地告知,你必须购买至少99美元的Verisign证书才能“验证”和获取您的漏洞报告。很糟糕。


我有相同的问题。Comodo证书,无法在WinQual中设置。:( - Jon Tackabury
1
我是否正确理解您的更新,即WinQual/WER现在可以正确处理由其他授权机构签名的代码(就像Windows 7标志计划一样),但是您仍然需要这个促销价值99美元的VeriSign证书才能简单地登录到WinQual帐户中?如果是这样,那么在处理由其他授权机构签名的错误报告时,是否还有其他限制需要注意? - Steffen Opel

12

我刚刚注册了WinQual,一直在考虑这个问题;我想现在我有答案了。

简而言之:他们根本没有使用VeriSign作为证书:他们只是将验证您的身份的任务外包出去。

Microsoft不希望你在未经身份验证之前就访问WinQual网站。因此,他们需要进行身份验证过程。

他们可以设立一个部门向您收取99美元,并执行验证操作。但是他们已经在VeriSign拥有重要股权,后者已经有员工可以执行该操作。所以他们使用获取证书的过程来验证您的身份。它根本没有使用证书,只是委托VeriSign完成验证任务。

请注意,他们不需要您继续维护VeriSign证书以保留账户:这只是加入网站的一次性费用。

因为这是Microsoft验证您的身份,他们信任VeriSign,因为他们投资了它,而他们不太信任Comodo,因此他们希望您为此目的使用VeriSign,而不是其他证书。从开发者的角度看,这似乎有点傻,但我可以理解他们的观点。


我猜那是设计问题。他们正在验证我的身份,而不是验证我是否是拥有那个可执行文件的人。 - Ian Boyd
2
@Boinst:你说“他们不需要你继续维护VeriSign证书”,但是你的可执行文件不是必须使用同一证书进行签名吗?这种情况下,你确实需要保持证书的有效性,否则它将无法用于代码签名。否则,他们如何验证我正在尝试获取崩溃转储的可执行文件属于我? - RichieHindle
@RichieHindle,不,这似乎完全不是这种情况。 - Boinst
4
@Boinst: 我很困惑...微软是如何知道我拥有那些崩溃转储文件所对应的可执行文件的?如果我以自己的名义注册,然后访问我的竞争对手的崩溃转储文件,有什么可以阻止我吗?(请指向一些文档,但我没有找到任何回答这个问题的文档。) - RichieHindle

8

已经完成了代码签名和最近的Winqual注册,以下是一些澄清:

  1. 对于Winqual注册,你的签名本身并不会与Winqual数据库进行匹配。 Winqual仅检查来自VeriSign的证书,以证明VeriSign已经验证了您的身份。然后他们从您的签名中获取公司名称。

  2. 接下来,您需要使用Microsoft工具创建一个或多个“产品映射文件”,并将其上传到Winqual。之后,Winqual服务器会针对所有映射文件检查数千兆字节的崩溃数据库,并向您提供“事件”列表。(您用于代码签名的签名因此相当无关紧要。)

  3. 微软没有技术上的理由不能接受其他认证机构。但是:他们从中能获得什么好处呢?而且还有一个特别优惠计划,可以以只需99美元的价格获得一年的代码签名证书,如果将其与开发工具链或MSDN / TechNet会员费用进行比较,这并不算贵。

  4. 在我们的情况下,从VeriSign获得证书非常简单且非常快速-整个过程在两天内完成。(我们不在美国,所以我预计会有延迟。)[仅供澄清:您自己生成签名,它由公司私钥(用于签名)和公司公钥(用于验证代码签名)组成。任何认证机构(如VeriSign)只需使用其私钥对您的公司公钥进行反签名即可。这使得您的证书可验证。]

  5. 我们不知道VeriSign的99美元证书也可以用于代码签名(它不仅是组织ID)。因此,最初我们选择了另一个CA进行代码签名。然后我们为Winqual注册获得了VeriSign证书。

  6. 微软在WHDC和Winqual上发布了有关哪些签名提供程序被接受用于哪种类型的签名的信息。如果你在从其他CA获取证书之前没有阅读此信息,那么你不能真正责怪他们吧?

希望这可以帮助你更好地理解。


“Microsoft没有技术上的理由不能接受其他证书”是我问题的核心。为什么他们一开始不接受所有证书呢?在我看来,他们本来就必须“费尽心思”才能避免接受其他证书。代码已经存在,可以检查证书是否由可信机构签名,我在Windows资源管理器、Internet Explorer和证书管理器中都看到了它。假设API是IsCertificateSignedByTrustedAuthority。那么,为什么他们会忽略这个已经建立的代码,而写IsCertificateSignedByVerisign呢?肯定有一个合理的原因。 - Ian Boyd
至于第6点(微软这么说)。他们现在是这么说的。六年前,当我第一次研究它时,他们只说它必须是数字签名的。 - Ian Boyd
我对可能的原因有以下想法: (1)微软与独立软件供应商进行大规模合作:没有足够多的人注册Winqual并投诉,以使微软改变注册系统。相比于失去的工作时间或潜在的损害,99美元微不足道。 (2)接受其他CA证书意味着需要在Winqual注册服务器上保持更多的根证书更新。如果账户服务器位于额外安全的环境中,则这可能是太多的工作量。 关于第6点:有趣。顺便说一下,VeriSign也表示您只能将99美元的证书用于企业ID(而非代码签名)。 - tagon

6
同样的问题出现在我这里,我正在为Win7 Logo认证应用程序,以便获得MS合作伙伴计划的积分。我购买了Comodo代码签名证书。应用程序通过了测试,现在我正在尝试设置Winqual帐户,最初因为不得不购买另一个签名证书而感到恼火,然后我遇到了5天的延迟,试图实际购买这个“组织证书”,价格为99美元。没有办法,“VeriSign SSL证书注册暂时不可用,请稍后再试。”,而且支持可能是我遇到过的最糟糕的支持。 天哪...请至少尝试阅读问题描述或甚至尝试重现步骤,不要只是给我一些愚蠢的知识库解决方案来解决其他问题。 或者只是说服务不可用,将在5天后可用。 如此令人沮丧...
如果有人有同样的问题,这里有一个更新,我最终得到了解决方案并下单了。(我想你需要找对技术支持人员:)
“我们真诚地道歉。由于组织证书注册存在错误,因此会出现此错误。如果在注册的“证书信息”(第3步)部分输入除美国以外的任何国家,则会出现此错误。这已经升级给工程师,他们正在修复它。同时,您可以执行以下操作以解决错误并完成注册: 在注册的“证书信息”部分,将国家输入为“US”,州输入为“California”。所有其他信息都可以是正确的。完成注册后,请将证书的订单号以及公司的正确国家和州值作为答复此电子邮件发送给我们。我们将在系统中编辑订单,并为您输入正确的公司和国家值,然后发行证书。我们向您发放的证书将包含正确的信息。”

4

4

哈!我们的Comodo证书也遇到了完全相同的情况。这是典型的霸凌行为,他们的回答完全是胡说八道。如果有什么问题,我比起Comodo和Thawte等公司更加不信任Verisign。让我们不要忘记他们之前尝试过的事情


3

我们也遇到了同样的问题。他们不接受Comodo代码签名证书。很可能是为了增加他们的集团收入(VeriSign/VeriTest是微软拥有的)。我不相信他们没有收到大量要求使用非VeriSign证书的请求。然而,你还有什么选择呢……?


4
微软不拥有VeriSign。另一方面,我认为VeriSign正在支付给微软,并且如果他们向其他类型的证书开放WER,可能会支付更少的费用。 - Ian Boyd
1
请查看以下内容:“1996年投资 - Verisign” - http://www.microsoft.com/msft/investments/history.mspx - Jon Onstott

2
问题实际上更深层次。
为了保持特殊状态,我们的产品之一需要重新认证。当然,这只能通过VeriTest完成。为了节省资金并能够在问题被发现之前做出反应,我们决定选择自测选项,使用来自Microsoft的所谓“Works with”工具自行测试软件。
虽然文档中说您需要使用真实代码签名证书对所有二进制文件进行签名才能通过Windows Server 2008 R2的验证,但没有人提到这实际上是可选的,并且不会影响测试结果(直到您实际上在报告页面上看到此步骤是可选的且不会影响测试结果)。
然而,在此之前,我们已经购买了Comodo证书,因为它的价格只有VeriSign证书的四分之一,而且功能完全相同。
在成功重新认证后不久,我们收到了来自Microsoft的当前虚拟启动事件的通知以及成为其中一部分的可能性(这是一件很棒的事情)。但是,要注册,我们需要输入WinQual,猜猜看……当然,对于此,我们至少需要一个VeriSign WinQual公司证书。
现在真正有趣的是,在至少两天内,相应的VeriSign网站无法访问。到目前为止,已经有三天无法获取这样的证书,他们甚至没有回应支持请求。
如果其他公司开始托管类似于WinQual的平台,而它确实接受来自所有严肃出版商的证书,那将是多么美好啊!
Joel…… Jeff,来吧。这是你们的事情:“[...] exhandler.com就像winqual一样,但没有邪恶。”

其他人真的无法做WinQual。微软Windows将所有错误报告发送到微软。我不知道苹果Safari / Leopard / Tiger / Sabertooth或Red Hat Linux / Debian Linux / BSD / Fedord Linux / Ubuntu将它们的错误报告发送到哪里。 - Ian Boyd

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