【发布时间】:2017-09-27 03:15:58
【问题描述】:
我已经安装了 Java 9,因为我想使用 OCSP(在线证书状态协议)功能和 TLS 握手,也就是 OCSP 装订。正如https://docs.oracle.com/javase/9/security/java-pki-programmers-guide.htm#JSSEC-unique_4307382 所说,Java 9 是第一个使用 OCSP 装订的版本。
要对其进行测试,您可以设置或读取某些新属性,例如“jdk.tls.server.enableStatusRequestExtension”。
但是,当使用
查询此属性时,我得到的是“null”而不是“false”(或“true”)System.getProperty("jdk.tls.server.enableStatusRequestExtension")
刚刚用新的 jShell 试了一下:
[jshell> System.getProperty("jdk.tls.server.enableStatusRequestExtension")
$2 ==> null
Java 9 不应该发生这种情况。有什么想法吗?这是我两天前下载的所谓的早期访问版本。 Java 9 的正式发布日期为 2017 年 9 月 21 日(昨天)。不幸的是,Mac OSX 还没有发布版本。 难道这个功能还没有在 Early Access Build 中实现(应该接近最终版本)?
希望任何人都可以在这里提供帮助。
【问题讨论】:
-
这是
jdk.tls.server.enableStatusRequestExtensionJVM 属性吗? -
@nullpointer Oracle 页面 (docs.oracle.com/javase/9/security/…) 说:“设置 Java 服务器以使用 OCSP 装订在线证书状态协议 (OCSP) 装订通过设置系统属性 jdk 在服务器上启用。 tls.server.enableStatusRequestExtension 为 true。(默认设置为 false。)“所以它是一个系统属性。不确定这是否与 JVM 属性相同。
-
但是 System.getProperty() 将返回 null 如果没有您指定的键的属性,这一直是正确的。您为什么声称“Java 9 不应该发生这种情况”?
-
我不确定我为什么会被误解。我引用的那句话不是清楚地表明 Java 9 确实存在此属性吗?它是随 Java 9 引入的。它不是操作系统的属性,它是 JVM 的一个属性。所以我不明白为什么如果句子清楚地表明它默认设置为“false”,它为什么应该为空。
-
我怀疑您在此特定上下文中误解了文档中“默认”的含义。它指的是没有属性设置时代码的默认行为,而不是属性设置的默认值。请参阅下面的帖子。
标签: tls1.2 handshake java-9 ocsp