Authenticode、SPC和Java代码设计之间的区别?

Authenticode、SPC和Java代码设计之间的区别?,java,windows,security,certificate,pki,Java,Windows,Security,Certificate,Pki,大多数CA在不同的“产品”中销售代码签名证书,如Verisign或Certum: Microsoft Authenticode-“允许您签署EXE、OCX、DLL、bla…” Java代码签名-“允许您对Java代码进行签名” 软件发布者证书-“允许您签署软件” 嗯,我真的很困惑。除了价格,所有这些产品之间有什么区别?出于好奇,我问了Verisign和其他CA几次,但没有得到回答 我从Certum CA获得了一个Authenticode证书。我在Internet Explorer中注册了它,

大多数CA在不同的“产品”中销售代码签名证书,如Verisign或Certum:

  • Microsoft Authenticode-“允许您签署EXE、OCX、DLL、bla…”

  • Java代码签名-“允许您对Java代码进行签名”

  • 软件发布者证书-“允许您签署软件”

嗯,我真的很困惑。除了价格,所有这些产品之间有什么区别?出于好奇,我问了Verisign和其他CA几次,但没有得到回答

我从Certum CA获得了一个Authenticode证书。我在Internet Explorer中注册了它,将其导出为PKCS#12 PFX,并可以对EXE、DLL。。。如承诺的那样

现在。。。我试着用keytool将这个PFX导入Java,然后我试着给一个JAR签名。成功了

然后是神秘的“软件发行商证书”作为产品。我不知道我可以/应该签什么。。。雨衣?Linux?“Microsoft Authenticode”不是软件发行商证书吗?EXE不是“软件”吗?那真让我困惑

因此,我现在的问题是:当我订购了Microsoft Authenticode证书时,使用它来签署例如JAR文件或任何其他内容(如果可能)是否非法?这些证书之间似乎没有技术上的区别。所有这些产品都应该具有相同的代码签名EKU-OID“1.3.6.1.5.5.7.3.3”,这与EXE、JAR、AdobeAIR之间没有任何区别,也没有什么区别。那么,如果所有的“代码签名”证书在技术上都是平等的,那么为什么我必须决定我是想成为“Java开发人员”还是“Windows开发人员”或“软件开发人员”

也许证书上还有差异?当我使用Authenticode证书进行签名时,也许我在JAR中没有获得足够的权限


(注:我不会在商业上使用我的软件!)

正如您所猜测的,没有技术上的区别。使用适当的工具链,可以使用用于签名Java应用程序的证书来签名Windows可执行文件


例如,请参阅使用Java密钥库或标准PKCS#12密钥库对Windows可执行文件进行签名的工具。

我写了一篇关于转换Java证书并将其用于Authenticode的短文。你可以在这里找到它:


多年来,我们一直在这样做,没有任何负面后果。

你知道,与证书密切相关(我们开发和销售PKI库),我有同样的问题,没有回答。这似乎是错误的,因为正如您正确注意到的,密钥用法是相同的,并且从技术角度来看,证书是相同的。也许他们试图欺骗一些用户购买几种不同的证书,或者直接以适用的格式(PKCS#7/PKCS#8、JKS、PKCS#12)颁发证书。谢谢您的评论。那你觉得呢?如果CA发现我也签署了JAR软件,他们会吊销我的证书吗?我很不确定这是否符合他们的法律条款,因为有这些“产品”。很抱歉之前没有回答-你的问题没有被注意到。我现在再次调查这个问题,对于GlobalSign CA,他们的文档中没有明确禁止使用Adobe AIR的验证码证书。不过,他们可能会将其视为违反订户协议(尽管没有设置此类限制)。所以我现在自己也有这个问题(试图决定是否需要为不同的签名类型购买另一个证书),但没有解决方案。