7

我们有一个代码签名证书,购自GlobalSign for Authenticode签名(他们称之为)。现在我们需要签署Java applet,并很快将Adobe AIR模块(applet?)。问题是:从技术角度来看,如果由同一个CA(例如Comodo或GlobalSign)发布的Authenticateode证书和Java证书或AIR证书之间有任何区别?如果可以替换的话,我不认为购买不同证书有意义。Java,Adobe AIR,Authenticode,VBS的代码签名证书 - 它们有区别吗?

我知道证书的密钥使用字段必须相同(代码签名),但可能扩展的代码使用或策略或其他扩展在这些证书中有所不同。如果某个拥有两个或更多类型的代码签名证书的人可以为我检查,我将不胜感激。

回答

0

似乎任何代码签名证书都适用于任何提及的平台。我向GlobalSign支持人询问了这种差异 - 他们没有回应,但不久之后他们改变了他们的网页,现在您将为所有平台购买一个代码签名证书。

2

从我从RFC 5280收集的内容中,密钥使用扩展只能决定证书是否可用于代码签名。在RFC中似乎没有任何东西可以限制您是否签署Java代码或AIR或其他任何东西。这似乎意味着如果您可以签署一段代码(或任何其他类型的非关键数据),您可以签署任何代码。

也就是说,证书中可能存在CA特定的扩展名。没有看到证书,很难判断是否有限制。从技术角度来看,只要客户端(即浏览器,如果我们正在谈论applet)承认CA,并且对您的密钥使用和证书类型(DIGITAL_SIGNATURE和OBJECT_SIGNING)的组合感到满意,那么您应该精细。

+0

这并不完全如此,这是为什么。例如,常规SSL证书和EV SSL证书的密钥用法相同。它是政策OID,包含在EV SSL证书中,它定义了这是EV SSL证书。对于每个颁发EV SSL证书的“已认证”CA,此策略ID都不相同,并且策略ID列表会不时更新。所以我想*可以*是一些自定义扩展(或扩展密钥用法扩展中的值),它指定证书只能用于签署特定类别的代码对象。这就是问题的来源。 – 2010-11-05 19:33:38

+0

我确实怀疑可能存在可能导致问题的自定义扩展,但从RFC中并不清楚,也不清楚如果浏览器无法识别扩展,则它甚至无关紧要。浏览器可以忽略他们不了解的非关键扩展,不是吗?无论如何,我想我可以将我的答案改为“我不知道”。看来您需要查看您拥有的证书的具体内容。你能够发布证书的相关部分吗? – 2010-11-05 19:44:09

+0

@Cameron如果我有这些证书,那就没有问题了。我试图找出,如果从技术或法律的角度来看,为不同的代码对象类购买不同的证书是有意义的。到目前为止,看起来我们将不得不再购买一台(我们已经有一台)并比较它们。 – 2010-11-06 11:44:17

5

有在http://www.adobe.com/devnet/air/articles/signing_air_applications.html一个明确的声明:“开发人员可以使用任何类-3, 任何CA提供 高保障的证书签署的Adobe AIR应用 ”

不幸的是,我找不到任何类似于Java的东西。但是,无论各种平台的最低证书要求如何,最好的办法可能是与现有证书提供商联系,询问他们为这些平台提供的证书之间是否存在任何有意义的差异。

Verisign网站上的一些无耻之处表明,证书交付给购买者的格式是他们产品之间唯一真正的区别,但他们并没有直接说明这一点,所以谁知道。 ..?

+0

感谢您的参考。从技术上讲,它可以专门用于AIR,任何代码签名证书都可以工作,但是(a)对于其他人(java,VBS),情况可能并非如此,并且(b)可以有一些我忽略了一些法律限制(我曾阅读过GlobalSign的政策)附带说明:我们使用GlobalSign代码签名证书来签署内核模式驱动程序,因此它是为某个目的而购买的,现在我想将其用于Java模块(即一个不同的项目)。 – 2010-11-12 17:27:52