首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java应用程序管理证书更新

如何使用Java应用程序管理证书更新
EN

Stack Overflow用户
提问于 2015-03-16 18:19:33
回答 1查看 1.6K关注 0票数 3

我正在使用Java技术开发一个Java桌面应用程序。我使用有效的证书对我的应用程序进行签名,并使用JnlpDownloadServlet进行部署。我用maven-webstart-plugin准备了所有这些基础设施。

但是,当我的证书到期时,我不得不辞职并重新部署我的应用程序,我在让webstart重新下载我的应用程序时遇到了问题。

据我所知,基于我可以从Internet收集的内容(Webstart官方文档很糟糕),默认情况下,webstart检查版本并根据文件服务器时间更新库(最后修改的HTTP头)

如果这是真的,webstart客户端应该完全下载我的应用程序的新版本。

但是,webstart只是在下载JNLP文件中具有更新版本号的库,因为maven webstart插件会生成这些库。

应用程序无法启动,抱怨不同的签名JAR,当我查看tomcat访问日志时,服务器中唯一被选中和加载的文件是JNLP文件、具有新版本的JAR和另一个JAR(假设这是下载、签名-检查和使客户端失败的JAR)所有请求都是GETs,没有头。

我是,不是,而是使用JNLP中基于版本的协议(由jnlp.versionEnabled属性激活),但是webstart客户端的行为就像打开了它一样。

我的JNLP更新选项是

代码语言:javascript
复制
<update check="always" policy="always" />

我看到的唯一解决方案是更新所有JAR的版本号,并附加到版本号中,但是JNLP的“呈现化”是由webstart插件自动完成的,我更喜欢一种更简单、更健壮的方法。

想法?

编辑: JNLP文件中的jar元素具有version属性,因此触发了基于版本的下载协议。这是由webstart插件自动添加的。在管理依赖关系版本时,这是一个很好的功能。但如果你只想更新签名,那就太痛苦了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-24 11:51:41

我发现,因为1.5 Java支持验证过期签名(如果它们是时间戳的话):

http://docs.oracle.com/javase/tutorial/deployment/jar/signing.html

这里也很好地解释了这一点:https://stackoverflow.com/a/24178906/134898

幸运的是,maven-webstart-plugin支持这一点,因为版本1.0-beta5 5:

代码语言:javascript
复制
    <sign>
        <storetype>pkcs12</storetype>
        ...
        <tsaLocation>https://timestamp.geotrust.com/tsa</tsaLocation>
    </sign>

现在,webstart客户端将接受该应用程序,只要时间戳有效,即使我的签名证书过期。(我使用私人CA证书和过期的签名证书进行了测试)

我将继续使用基于webstart版本的协议在我的库中进行真正的更改,这将触发独立的JAR下载,一切都很好,世界是美好的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29084155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档