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

Dav*_*vid 6 java security applet code-signing

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

jarsigner -verify -verbose [my jar]
Run Code Online (Sandbox Code Playgroud)

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

以下是用于生成密钥并在Jar上签名的整套命令:

keytool -genkey -keystore [keystore] -alias [alias] -validity 2000
keytool -selfcert -keystore [keystore] -alias [alias] -validity 2000
jarsigner -keystore [keystore] [jar] [alias]
Run Code Online (Sandbox Code Playgroud)

And*_*son 13

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

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

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
Run Code Online (Sandbox Code Playgroud)

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

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

不完全是.

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

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

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

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