此jar包含签名者证书将在六个月内过期的条目

时间:2012-05-01 22:32:34

标签: java security applet code-signing

我已经以各种方式签署了我的jar,但是当我使用该命令时,我不断收到上述错误消息:

jarsigner -verify -verbose [my jar]

有没有办法摆脱这个错误?如果没有重新认证,我的代码会在六个月后停止工作吗?

以下是用于生成密钥和密钥的整套命令。签下Jar:

keytool -genkey -keystore [keystore] -alias [alias] -validity 2000
keytool -selfcert -keystore [keystore] -alias [alias] -validity 2000
jarsigner -keystore [keystore] [jar] [alias]

1 个答案:

答案 0 :(得分:13)

  

有没有办法摆脱这个错误?

这不是错误,而是警告。至于如何避免它,请确保证书的有效期超过6个月。对于自签名证书,这是在生成密钥时提供正确参数的问题。这是keytool Example

keytool -genkeypair -dname "cn=Mark Jones, ou=Java, o=Oracle, c=US"
  -alias business -keypass <new password for private key> -keystore /working/mykeystore
  -storepass <new password for keystore> -validity 180

重要的部分是-validity 180。这个例子是180天,或大约6个月。使用1800年约5年。

  

如果没有重新认证,我的代码会在六个月后停止工作吗?

不完全是。

  • 某些系统上的用户将收到证书已过期的警告,并可选择接受该证书。如果他们这样做,它将正常工作。例如“签名已过期”:
  • 其他系统可能配置为自动拒绝过期证书。在这些机器上,代码很可能永远不会启动,或者在极少数情况下,会加载但是应用了沙盒。

  

我认为我已经关闭了所有的java缓存,因为它在尝试开发时很烦人。

测试期间的Applet缓存是一个大问题。我试图避免在浏览器中测试applet,直到绝对必要。我知道有三种方法来测试不会缓存类的applet。

  1. AppletViewer
  2. 混合applet /应用程序
  3. Appleteer(在某些方面略胜applet查看器,我刚刚开发了它)