Certificate Java、AdobeAIR、Authenticode、VBS的代码签名证书-它们是否不同?

Certificate Java、AdobeAIR、Authenticode、VBS的代码签名证书-它们是否不同?,certificate,code-signing,digital-certificate,jar-signing,code-signing-certificate,Certificate,Code Signing,Digital Certificate,Jar Signing,Code Signing Certificate,我们有一个代码签名证书,从GlobalSign购买用于Authenticode签名(他们称之为)。现在我们需要签署Java小程序,很快就会签署Adobe AIR模块(小程序?)。问题是:从技术角度来看,如果Authenticode证书和Java证书或AIR证书是由同一CA(比如Comodo或GlobalSign)颁发的,那么它们之间是否有任何区别?如果不同的证书是可替换的,我认为购买它们没有意义 我知道证书的密钥使用字段必须相同(代码签名),但这些证书中的扩展代码使用或策略或其他扩展可能不同。如

我们有一个代码签名证书,从GlobalSign购买用于Authenticode签名(他们称之为)。现在我们需要签署Java小程序,很快就会签署Adobe AIR模块(小程序?)。问题是:从技术角度来看,如果Authenticode证书和Java证书或AIR证书是由同一CA(比如Comodo或GlobalSign)颁发的,那么它们之间是否有任何区别?如果不同的证书是可替换的,我认为购买它们没有意义


我知道证书的密钥使用字段必须相同(代码签名),但这些证书中的扩展代码使用或策略或其他扩展可能不同。如果有人拥有由一个CA颁发的两种或两种以上类型的代码签名证书,请帮我检查一下,我将不胜感激

根据我从RFC 5280收集的信息,密钥使用扩展只能决定证书是否可用于代码签名。RFC中似乎没有任何东西可以约束您是签署Java代码还是AIR或其他任何东西。这似乎意味着,如果您可以对一段代码(或任何其他类型的非关键数据)进行签名,那么您可以对任何代码进行签名

也就是说,您的证书中可能有特定于CA的扩展。如果看不到证书,很难判断是否有限制


从技术角度来看,只要客户机(即浏览器,如果我们谈论的是小程序)能够识别CA,并且对您的密钥使用和证书类型(数字签名和对象签名)的组合感到满意,那么您就可以了。

这里有一个明确的声明:

“开发人员可以使用任何class-3, 由以下机构提供的高保证证书: 任何CA都可以签署Adobe AIR 应用程序。”

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


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

似乎任何代码签名证书都适用于任何提到的平台。我向GlobalSign支持部门询问了区别——他们没有回应,但很快他们就改变了网页,现在您将为所有平台购买一个代码签名证书

事实并非如此,原因如下。例如,常规SSL证书和EV SSL证书的密钥用法是相同的。它是策略OID,包含在EV SSL证书中,该证书定义这是EV SSL证书。对于颁发EV SSL证书的每个“认证”CA,此策略ID是不同的,并且策略ID列表会不时更新。因此,我猜可能有一些自定义扩展(或扩展密钥使用扩展中的值)指定证书应仅用于对特定类别的代码对象进行签名。这就是问题的来源。我确实怀疑可能有自定义扩展会导致问题,但RFC不清楚,也不清楚如果浏览器无法识别扩展是否重要。浏览器可以忽略他们不理解的非关键扩展,不是吗?无论如何,我想我可以把答案改成“我不知道”。似乎您需要查看您拥有的证书的细节。你能发布证书的相关部分吗?@Cameron如果我有这些证书,那就没有问题了。我试图找出,为不同的代码对象类购买不同的证书(从技术或法律角度)是否有意义。到目前为止,我们似乎不得不再买一个(我们已经有了一个)并进行比较。@Eugene是的,我明白你的意思。我以为您有一个证书可以检查,但我同意比较两个证书是回答这个问题的最佳方法。@Cameron我确实有一个用于Authenticode的证书,但它太通用了,即它适用于许多类的代码对象。AIR和Java证书更为具体,我不需要检查:(感谢您的参考。这对该主题有一定的启发,虽然不是很多。从技术上讲,任何代码签名证书都可以特别适用于AIR,但是(a)其他(Java、VBS)的情况可能不同,以及(b)可能有一些我忽略了的法律限制(我确实阅读了GlobalSign的政策)。附带说明:我们使用GlobalSign代码签名证书对内核模式驱动程序进行签名,因此购买它是有目的的,现在我想将其用于Java模块(在另一个项目中)。