Java 1.5添加了enhancement以支持签名时间戳。据我所知,这个想法是签名的jar文件不会因为代码签名证书已过期而无效,只要文件在证书有效时签名即可。从理论上讲,这意味着我们不必在证书到期时每年重新签署和重新部署我们的应用程序。不幸的是,基于这两个论坛主题,实现中似乎存在问题:
http://forums.sun.com/thread.jspa?threadID=744677
http://forums.sun.com/thread.jspa?threadID=5309004
我即将开始对此进行测试,但我想知道是否有人成功完成了这项工作,没有必须在客户端上导入时间戳证书(这会破坏整个目的)?< / p>
答案 0 :(得分:4)
不幸的是,此功能此时似乎完全没用。在签署jar文件时很容易添加时间戳,只需将此参数添加到jarsigner
命令:
-tsa https://timestamp.geotrust.com/tsa
这是Thawte的时间戳服务器的URL。遗憾的是,Thawte时间戳CA证书未包含在Java运行时的可信CA证书列表中,因此它实际上毫无意义。也就是说,如果在代码签名证书过期后加载applet,则会出现“不受信任”警告对话框,而不是“受信任”对话框。
有一种“解决方法”,排序here,但它的工作原理是将Thawte时间戳CA证书嵌入applet本身,并在客户端上运行keytool
以导入证书。我无法看到它如何工作,因为用户在此代码运行之前已经看过签名代码对话框。
我会继续寻找解决方案,但我没有希望。我无法想象为什么在所有这些时间之后Java运行时都没有包含可用的时间戳CA证书。
答案 1 :(得分:4)
Thawte TSA根证书已于6u10和5.0u18添加到Sun的JRE cacerts文件中。