当前位置: 首页 > 知识库问答 >
问题:

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

孙莫希
2023-03-14

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

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

据我所知,根据我可以从Internet收集的内容(Webstart官方留档很糟糕),默认情况下webstart会根据文件服务器时间检查版本并更新库(Last-Modified HTTP标头)

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

但相反,webstart只是在maven webstart插件生成它们时下载JNLP文件中具有较新版本号的库。

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

我没有在JNLP中使用基于版本的协议(由jnlp.version启用属性激活)但webstart客户端的行为就像它处于开启状态一样。

我的JNLP更新选项是

<update check="always" policy="always" />

我看到的唯一解决方案是更新所有JAR的版本号,在版本号后面添加一些内容,但JNLP“渲染”是由webstart插件自动完成的,我更喜欢一种更简单、更健壮的方法。

思想?

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

共有1个答案

郑俊美
2023-03-14

我发现,由于1.5 Java支持验证带有时间戳的过期签名:

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

这里也有很好的解释:https://stackoverflow.com/a/24178906/134898

幸运的是,maven webstart插件从版本1.0-beta5开始就支持这一点:

    <sign>
        <storetype>pkcs12</storetype>
        ...
        <tsaLocation>https://timestamp.geotrust.com/tsa</tsaLocation>
    </sign>

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

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

 类似资料:
  • 我在AWS OpsWorks上部署了一个Rails应用程序。我最近关联了一个购买AWS SES的域,并在该域的AWS证书管理器中获得了一个证书。 根据文件,所支持的服务是: null 例如。有一种方法可以从ACM获得SSL证书和SSL证书密钥,以便将其添加到OpsWorks中的应用程序设置中?

  • 我有一个Android应用程序,我可以在其中向一个servlet发送多部分post。但我要把电话限制在每5分钟一次。有了web表单,我就可以使用cookie了。对于android应用程序,它不是这样工作的。我怎么才能让它工作呢?

  • Windows NT Option Pack 提供了在 Web 服务器上的 ASP 应用程序管理服务。例如,Internet 服务管理器为应用程序开发人员提供了一个使用简便的管理工具来设置应用程序的属性。另外,Active Server Pages 提供了允许用户的应用程序存储全局数据的脚本功能。本主题简要介绍部分应用程序管理功能,并提供到详细信息的链接。 启动和结束应用程序 当 Web 服务器第

  • 如果1要更新应用程序,请从控制台执行操作。。1.单击部署。2.选择应用程序名称并单击更新选项。3、在这里,他可以改变: 现在在我的应用程序中没有指定计划路径,所以要更新应用程序,我只更改源路径。应用程序已成功更新。 我想通过提供新的源路径,使用wlst命令更新应用程序。有可能吗? 喜欢 updateApplication('backoffice','path\ to\ the\ ear\ file

  • 我使用一些第三方脚本来处理贝宝支付。在Github上找到它,效果完美。它使用以下凭据:用户名、密码、签名。 在沙箱中,它工作得非常完美。现在我想去现场。 我去开发公司。贝宝。com- 然而,我找不到我真正需要的。我在哪里买的 非常感谢。

  • Rails 是一个非常受欢迎的 Web 应用程序框架(从某种意义上说,是由于它被广泛应用而不是人们真正喜欢它)。 因此,在某些时候,你可能会被要求管理它。 本节要介绍的处方包含了安装一台运行 Rails 应用程序服务器所要做的绝大部分工作。 本处方假定你会使用 Nginx 和 Passenger 作为 Web 服务器, 然而你也可以轻松地修改本处方,使用 Apache 替换它。 操作步骤 创建 r