java - Authenticode、SPC 和 Java CodeSign 之间的区别?

标签 java windows security certificate pki

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

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

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

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

好吧,我真的对此感到困惑。所有这些产品之间有什么区别 - 除了价格?由于好奇,我问了 Verisign 和其他 CA 几次,但没有得到答复。

我从 Certum CA 获得了 Authenticode 证书。我在 Internet Explorer 中注册了它,将其导出为 PKCS#12 PFX,并且可以按照 promise 对 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:我没有将我的软件用于商业用途!)

最佳答案

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

例如参见 Jsign ,一种使用 Java keystore 或标准 PKCS#12 keystore 对 Windows 可执行文件进行签名的工具。

关于java - Authenticode、SPC 和 Java CodeSign 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3655263/

相关文章:

java - Java 中监控网络适配器的轻量级方法是什么?

python - QObject::killTimers 错误 QThread PyQt

c# - Java 加密 C# 解密

java - 所有请求似乎都来自使用 Azure 上的 Tomcat 的 127.0.0.1

java - 如何使用java中的身份验证方法连接Azure VM上的WASB

windows - 如何在批处理脚本中隐藏 'net use' 命令错误消息

asp.net - 如何将我的 ASP.NET 成员(member)数据库从 Express 更改为标准 SQL?

javascript - 如何判断Github代码库是否包含恶意代码?

java - 你如何重构@Transactional 方法来拆分非事务部分

java - 如果我以原始类型作为参数调用泛型方法,将使用什么类型参数?