7

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

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

  • Java CodeSign - “允许您签署 Java 代码”

  • 软件发行商证书 - “允许您签署软件”

好吧,我对此感到非常困惑。所有这些产品之间有什么区别 - 除了价格?因为好奇,我问了 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 和那里还存在的东西之间没有任何区别。所以,如果所有“代码签名”证书在技术上都是平等的,为什么我必须决定我是想成为“Java 开发人员”还是“Windows 开发人员”还是“软件开发人员”?

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

(PS:我不会将我的软件用于商业用途!)

4

2 回答 2

2

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

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

于 2012-05-14T21:16:00.207 回答
1

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

我们多年来一直这样做,没有任何负面影响。

于 2012-12-13T14:17:13.880 回答