Java Applet - 需要代码签名证书与 SSL 证书

信息安全 证书 爪哇 代码签名
2021-09-05 03:52:54

我正在开发一个曾经是自签名的 Java Applet。现在正在使用 java 7u51,我正在努力为 Applet 签名 jar。

我使用用于 apache2 ssl 的证书/密钥对 jar 进行签名。为了做到这一点,我必须使用密钥/证书和Not Yet Commons SSL库创建一个新的密钥库。

如果我在 applet jar 上运行 jarsigner -verify,我会得到:

This jar contains entries whose signer certificate's ExtendedKeyUsage extension
doesn't allow code signing.

小程序仍然收到无效证书错误。我可以查看证书,它与用于 SSL 的证书相同。错误信息说它是由于自签名而被阻止的,但这不是自签名证书!

当我将安全设置向下移动到“中等”时,我可以运行小程序,但这对于这个项目是不可接受的。

我用来签署此证书的证书是链的一部分(大约 4 长)。有没有办法我需要使用整个链条对罐子进行签名?我需要使用代码签名证书吗?

1个回答

如果jarsigner -verify告诉您有问题,那么 JVM 很可能会出于同样的原因拒绝您的 applet,因为它们使用相同的代码库。

Extended Key Usage是一个标准的证书扩展,表示允许证书的“用途”的详尽列表。在这种情况下,似乎jarsigner(因此,大概是 JVM)对包含具有特定 OID 的扩展名的证书持坚定的态度,该 OID 表示“代码签名”。由您的 CA 编写相关扩展;默认情况下,SSL 服务器的证书不会包含这样的扩展名(如果它具有“扩展密钥用法”,它将包含用于“服务器身份验证”之类的 OID,而不是“代码签名”)。

您将必须获得特定的代码签名证书。并非所有 CA 都出售这种东西。