-tsa 或 -tsacert 时间戳,用于小程序罐自签名
当我试图在罐子里自我签名时,如下所示。
jarsigner -keystore my keystore myjar.jar myalias
它给出这样的警告:
没有提供 -tsa 或 -tsacert,并且此 jar 没有时间戳。如果没有时间戳,用户可能无法在签署者证书的到期日期 (2014-05-08) 之后或任何将来的吊销日期之后验证此 jar。
请帮助解决问题。
当我试图在罐子里自我签名时,如下所示。
jarsigner -keystore my keystore myjar.jar myalias
它给出这样的警告:
没有提供 -tsa 或 -tsacert,并且此 jar 没有时间戳。如果没有时间戳,用户可能无法在签署者证书的到期日期 (2014-05-08) 之后或任何将来的吊销日期之后验证此 jar。
请帮助解决问题。
最近的Java 7提供了一个(礼貌的?)警告,关于已经存在了十年的东西......
可信时间戳是在Java 5(2004)中引入的。这样做的动机是,当证书过期时,开发人员不会被迫“每年对部署的JAR文件进行重新签名”。
→http://docs.oracle.com/javase/1.5.0/docs/guide/security/time-of-signing.html
基于 URL 的时间戳颁发机构 (TSA) 通常由颁发证书颁发机构 (CA) 提供,以处理与 CA 颁发的相同证书。例如,可以按如下方式访问 digicert tsa url:
jarsigner -tsa http://timestamp.digicert.com [.. other options]
→http://www.digicert.com/code-signing/java-code-signing-guide.htm
使用自签名证书进行时间戳可能是一个难以捉摸的目标,因为 (1) TSA 时间戳需要是受信任的公平交易(这排除了“自时间戳”),并且 (2) 典型的 TSA URL 设置为与同一 CA 组织提供的证书一起使用(即 TSA URL 不处理自签名证书)
更新:
要尝试为自签名证书添加时间戳的 URL:
-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp
对于专用网络,可以考虑内部时间戳机构,例如Thales(nCipher)时间戳服务器(或历史上的OpenTSA)。
此警告告诉您,您的 jar 的证书将在 5 月过期。因此,在此日期之后,用户将无法执行您的程序。
为了改善这种情况,添加了时间戳功能。通过这种方式,您可以告诉用户:“我在这个时间点使用了证书(由时间戳机构 - tsa提供和验证),当它仍然有效时!只要您不更改并重新签名jar,即使在证书过期后,它仍然会运行,因为用户在创建时看到证书确实有效。
参考:http://docs.oracle.com/javase/7/docs/technotes/guides/security/time-of-signing.html
tl;dr:如果您忽略警告,您的 jar 在 14-05-08 之后将无法运行。添加时间戳,只要您不修改任何内容,它仍将运行。
问候