【问题标题】:This jar contains entries whose signer certificate will expire within six months此 jar 包含签名证书将在六个月内到期的条目
【发布时间】:2012-05-11 10:17:54
【问题描述】:

我已经以各种方式签署了我的 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]

【问题讨论】:

    标签: java security applet code-signing


    【解决方案1】:

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

    这不是错误,而是警告。至于如何避免,请确保证书的有效期超过 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 缓存,因为它在尝试开发时很烦人。

    测试期间的小程序缓存是一个大问题。在绝对必要之前,我尽量避免在浏览器中测试小程序。我知道有两种方法可以测试不会缓存类的小程序。

    1. 使用 AppletViewer
    2. 混合小程序/应用程序

    【讨论】:

    • 好的。好吧,我们可以完全控制将要部署该软件的系统,所以它可能不会成为问题。但是,如果我能一开始就摆脱警告,我会感觉好多了。我已经在使用有效性参数,但它似乎没有做任何事情。这正是我为 jar 签名所做的:pastie.org/3846104
    • 对不起,我不经常在 SO 上发帖,我没有意识到 enter 提交了编辑/评论。我编辑了我的帖子来解决这个问题。
    • 更多提示 1) 问题发布后可以进行编辑。 2)不要发布链接到更好地编辑到问题中的信息。 3) 当您在问题中添加输入/输出、HTML/XML 或源代码时,请使用代码格式。 4) 可以删除评论。 -- 4) 是相关的,因为我已经点击了链接,复制了文本并编辑了问题以添加输入命令(使用代码格式)。
    • 好的。感谢您的提示。我会确保牢记这些。无论如何,我遵循了你给我的例子,现在我没有收到那个警告。谢谢!但是,你建议的方式和我做的方式有什么区别?不是两种方式都指定了有效性吗?
    • 这是一个 java 小程序,所以我将它嵌入到网页中并以这种方式启动它。我以为我已经关闭了所有 Java 缓存,因为它在尝试开发时很烦人。
    猜你喜欢
    • 2012-01-13
    • 2011-12-24
    • 2020-04-14
    • 2015-01-08
    • 1970-01-01
    • 2012-09-07
    • 2012-10-29
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多