0

在Java中签名jar,我已经按照这三个步骤进行签名

  1. keytool -genkey -keystore myKeyStore -alias me
  2. keytool -selfcert -keystore myKeyStore -alias me
  3. jarsigner -keystore myKeyStore jarfile.jar me

我的问题如下:

  1. 之后我运行了我的小程序,为什么它显示作者未知?
  2. 我可以给-validity我的罐子没有天数,我可以给的最大天数是多少?
4

3 回答 3

2

keytool 有效期中所述,

每个证书仅在有限的时间内有效。这段时间由开始日期和时间以及结束日期和时间来描述,可以短至几秒,也可以几乎长至一个世纪。

正如@Andrew 和@Robert 所指出的,专业软件需要专业签名的证书。对于随意使用,可以在共享另一个信任渠道的人之间使用自签名证书。它还可以帮助拒绝错误的误判。

  • A 编写了一个开源程序,签名为 A。
  • B 添加了恶意软件,并且无法签署 A,签署 B。
  • C 错误地获得了 B 的版本并指控 A 犯罪。
  • A 可以验证是否发生了篡改。
于 2012-05-24T14:05:49.803 回答
2
  1. 您创建的证书是自签名证书。只有已由 Java 设置中标记为受信任的信任中心之一签名的证书才会显示为“已验证作者”。

  2. 有效性与您的 JAR 文件的工作时间无关。有效期仅标志着您可以使用证书(或更好地属于证书的私钥)进行签名的时间

于 2012-05-24T11:35:43.043 回答
2
  1. 它显示为“作者未知”,除非数字证书已通过密钥链认证回 CA(认证机构),例如 Verisign。“自签名”证书的问题在于,虽然您可以创建一个声称您就是您的证书,但其他人也可以创建一个声称他们就是的证书。
    由于一个“自签名”证书与下一个证书一样可以肯定地识别您(IE 毫无价值),因此 JRE 声明“作者未知”。
  2. 我不确定,但我记得在以前的证书中使用了 5000 天。也许真正的问题是,在 JRE 永远不会信任到甚至无法显示身份的证书上,声称自己是谁值得多久?如果这是用于商业产品,我强烈建议完成验证(可能很昂贵)。即使是广泛分发的免费产品也不会受到伤害。
于 2012-05-24T11:35:53.153 回答