【问题标题】:How Java checks that is out of dateJava 如何检查是否已过时
【发布时间】:2013-12-11 16:38:41
【问题描述】:

我有一个未连接到 Internet 的 linux 机器。 我已经安装了Firefox 24.0jre1.7.0_40(还有1.7.0_17) 当我使用本地安装在盒子上的 Web 应用程序启动 FF 时,我收到一个警告弹出窗口,

需要 Java 更新;您的 Java 版本已过期

我不明白 Java 是如何知道“过时”的??? 什么比较什么? 我假设检查 oracle.com 上的可用版本,如果系统上安装的当前版本太旧,则删除此警告。

或者启动的应用程序本身带有一些关于Java版本的信息,什么是可用的或在编译时使用了什么??

【问题讨论】:

  • 我相信它会检查 CLIENT Java 版本并与为您的应用程序推荐的版本进行比较。
  • 在这种情况下我们不能谈论客户端-服务器架构,我的意思是客户端本身就是主机。
  • 应用本身不是我开发的,火狐和jre一起开发的,应用也是第三方公司提供的

标签: java security plugins


【解决方案1】:

1.7.0u10 release notes中有解释。

JRE 依靠定期检查 Oracle 服务器来确定 如果它(JRE)仍然被认为是最新的,所有可用的 安全修复(高于安全基线)。过去,如果 JRE 无法联系 Oracle 服务器,它继续表现为 虽然它仍然是关于安全性的最新版本, 无限期。

为了避免这个问题,一个辅助机制,它不依赖于 外部通信,已添加到 JDK 7u10。由此 从版本开始,所有 JRE 都将包含一个硬编码的到期日期。 到期日期计算为在预定发布之后结束 下一个重要补丁更新。

我相信,在线支票的数据来自 https://javadl-esd-secure.oracle.com/update/baseline.version

在 JRE 中硬编码的到期日期和版本存储在 deploy.jar 中的 BuiltInProperties.class

对于 1.7.0u45,我们有

public static final boolean JRE_BASELINE_CHECKS_ENABLED = true;
public static final String JRE_EXPIRATION_DATE = "02/14/2014";
public static final String BASELINE_VERSION_131 = "1.3.1_21";
public static final String BASELINE_VERSION_142 = "1.4.2_43";
public static final String BASELINE_VERSION_150 = "1.5.0_55";
public static final String BASELINE_VERSION_160 = "1.6.0_65";
public static final String BASELINE_VERSION_170 = "1.7.0_45";
public static final String BASELINE_VERSION_180 = "1.8.0";
public static final String CURRENT_VERSION = "1.7.0_45";
public static final String CURRENT_NODOT_VERSION = "170";
public static final String DEPLOY_VERSION = "10.45.2.18";
public static final String DEPLOY_NOBUILD_VERSION = "10.45.2";
public static final String DEPLOY_NODOT_VERSION = "10452";
public static final String JAVAWS_NAME = "javaws-10.45.2.18";
public static final String JAVAWS_VERSION = "10.45.2.18";

【讨论】:

  • 谢谢!我能够为自己证明这一点:查看 BuiltInProperties.class 并看到:12/10/2013。如果我将日期设置为 2013 年 12 月 9 日并使用该 Web 应用程序启动浏览器,则不再弹出安全警告。但是当我将日期设置为当前(今天)时,我希望应该再次删除安全警告,但没有
  • 我的问题:1.为什么我不能以相反的顺序复制这个?提前设置日期以覆盖 BuiltInProperties.class 中的硬编码日期。我也尝试清除浏览器的 cahe 但没有收到安全警告 2. 有没有办法避免弹出安全警告而没有这个黑客来设置系统日期?我的意思是手动设置一些配置文件,例如我可以用脚本来做?
  • 有一个名为deployment.properties 的文件(至少在Windows 上)。此文件包含与过期检查相关的属性 (deployment.expiration.decision.*)。也许在您的测试之间删除此文件可能会有所帮助。
  • 谢谢!是的,这有帮助,现在我再次弹出设置当前日期/时间的弹出窗口。而且你不知道我怎么能摆脱当前日期的流行音乐下降?
  • 接受当前答案,因为这是另一个问题 ;-)
猜你喜欢
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2018-02-11
相关资源
最近更新 更多