首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java (8) Webstart:避免安全弹出

Java (8) Webstart:避免安全弹出
EN

Stack Overflow用户
提问于 2020-05-15 16:07:05
回答 1查看 644关注 0票数 0

目前,我正在开发一个运行在JRE1.8.0.77下的较旧的JavaFX应用程序。它在一个封闭的网络中运行,没有互联网连接。这个应用程序是通过Webstart部署到数百台机器上的,我们希望避免让用户通过安全弹出点击,因为机器经常被重新成像。

jnlp有标记:

代码语言:javascript
复制
<security>
   <all-permissions/>
</security>

Oracle列出了实现这一目标的两种主要方法,除了勾勾“不要再给我看”框外:

  1. 证书可以手动导入到JRE受信任的证书存储区中。
  2. 在位于${user.home}/.java.policy的/.java.policy文件中授予AllPermissions,或者指向$(JRE_HOME)/lib/security/java.security文件中有AllPermissions的任何AllPermissions策略文件。

来源

在这一点上,我尝试了这两种方法,但我面临以下问题:

授予AllPermissions

这是我想要完成的方法,因为应用程序运行在一个封闭的网络中,并且安全风险较小。然而,我试图添加以下案文:

代码语言:javascript
复制
grant {
     permission java.security.AllPermission;
};

前往若干地点,包括:

  • $USER_HOME/.java.policy
  • $JAVA_HOME/jre/lib/security/java.policy
  • $JAVA_HOME/jre/lib/security/javaws.policy (在运行webstart时使用-verbose将其列为"-Djava.security.policy")
  • 我甚至做了一个定制的policy.file,把它放在用户主目录下,并通过这里中指定的"deployment.system.security.policy“指向它。

这些策略似乎确实有效果,因为当我从例如.java.policy webstart删除权限时,它将拒绝作为一个整体运行。

但是每次我启动webstart时,给定jnlp所在的url,它都会显示安全弹出。

导入证书

这似乎是一种正确的方法,不过,我注意到的第一件事是,当您通过手动弹出允许证书时,它被放置在驻留在$USER_HOME/.JAVA/部署/security中的密钥存储库中,而不是在$USER_HOME/.keystore或$JAVA_HOME/jre/lib/security中。

使用前面提到的"deployment.user.security.trusted.certs“这里,我可以让webstart使用我提供的密钥存储库。(另外,当webstart创建自己的密钥存储库时,密码是"“。很显然,这个信息很难找到)

然后,手动批准的证书获得以下别名,这似乎是必要的,以便在后续运行中正确标识它:

代码语言:javascript
复制
deploymentusercert$tsflag$loc=http//webserver.com:80##jnlp:http//webserver.com:80##from:http//webserver.com:80java.util.random@530ea09d

其中webserver.com是jnlp位置的URL。如果我没有在证书旁边提到这个别名,那么在以后的运行中它似乎没有被识别,并且显示了另一个安全弹出。导出和导入证书不添加此别名,因此无法识别。

我可以使用这个确切的别名并在用户机器上分发它,但是这些用户机器分布在几个位置上,每个位置都承载着自己的jnlp文件。这意味着我无法使用通用别名。

在结论中

看来,我避免这个安全弹出的唯一方法是手动批准证书,然后将webstart生成的精确密钥存储分发给用户机器。然后,对于从其他地方获得jnlp的每个单独位置,我必须重复这个过程。

我希望有人知道一个不同的解决方案,或者在我的故事中发现了一个错误,因为我们似乎要指示用户点击这个框。谢谢您的提示!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 09:21:49

这个博客描述了最好的解决方案:3.html

要使webstart识别和使用证书,它至少必须在密钥库中具有以下别名:

代码语言:javascript
复制
deploymentusercert$tsflag

似乎没有随机数和URL是必要的。

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

https://stackoverflow.com/questions/61823646

复制
相关文章

相似问题

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