Authenticode,SPC和Java CodeSign之间的区别?

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

那么,我真的很困惑这个。 所有这些产品之间有什么区别 – 除了PRICE? 自从我好奇之后,我问Verisign和其他CA几次,但没有得到答案。

我从Certum CA获得Authenticode证书。 我在Internet Explorer中注册它,将其导出为PKCS#12 PFX,并可以按照承诺签署EXE,DLL …。

现在…我试图通过keytool将这个PFX导入到Java中,然后我试图签署一个JAR。 它的工作!

然后有神秘的“软件出版商证书”作为产品。 我不知道我可以/应该用什么签名… Mac? Linux呢? “Microsoft Authenticode”是否也是软件发布者证书? 是不是一个EXE“软件”? 这真让我困惑。

所以,现在我的问题是:当我订购了Microsoft Authenticode证书时,是否使用它来签名例如JAR文件或者其他可能的内容是非法的? 这些证书似乎没有技术上的区别。 所有这些产品应该具有相同的代码化EKU-OID“1.3.6.1.5.5.7.3.3”,这与EXE,JAR,Adobe Air之间没有任何区别,并且在那里还存在着什么。 所以,如果所有的“CodeSigning”证书在技术上都是相同的,为什么我要决定是否想成为“Java开发人员”或“Windows开发人员”或“软件开发人员”?

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

(PS:我不使用我的软件商业!)

你猜测没有技术上的差异。 使用适当的工具链,可以使用签名Java应用程序的证书来签署Windows可执行文件。

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

我写了一篇关于转换Java证书并将其用于Authenticode的文章。 你可以在这里找到它: http : //blog.botha.us/sarel/?p=21

我们已经这样做了多年,没有任何负面的后果。