Java 9 和 TLS OCSP 装订
Java 9 and TLS OCSP stapling
我安装了 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")
==> null
这不应该发生在 Java 9. 有什么想法吗?这是我两天前下载的所谓的早期访问版本。 Java9 的正式发布时间是 2017 年 9 月 21 日(昨天)。不幸的是,Mac OSX 还没有发布版本。
难不成这个功能真的还没有在抢先体验版本(应该接近最终版本)中实现吗?
希望有人能在这里提供帮助。
jshell returns 对 System.getProperty("jdk.tls.server.enableStatusRequestExtension") 的调用为空,因为 属性 不存在。我在 Java 9.
下得到相同的结果
您似乎期望 属性 自动存在于 Java 9 下,但事实并非如此;您仍然需要显式创建它,并为其赋值 "true"。来自 JEP 249,在 Java 9 中实现了此功能:
The implementation will choose reasonable defaults for OCSP specific parameters, and will provide configuration of these defaults via the
following system properties...
这并不意味着所有 OCSP 属性都自动存在于 Java 9 中并具有默认设置;这意味着如果没有这些 OCSP 系统属性,代码将 "choose reasonable defaults"。例如,如果服务器无法读取 属性 jdk.tls.server.enableStatusRequestExtension 实现 将(合理地)表现得好像 属性 已设置了一个值"false"。
另请参阅 Oracle presentation on security 中的 OCSP 代码示例:
// Enable OCSP Stapling (off by default)
System.setProperty(“jdk.tls.server.enableStatusRequestExtension”, “true”);
// Yes, that’s really it!
所以我建议您根据需要明确设置 OCSP 的客户端和服务器属性,不要担心它们在 Java 9.
下不存在
TLDR 版本:Java9 支持 TLS 的 OCSP 装订,但假定在用户没有任何明确配置的情况下它不会启用。
我安装了 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")
==> null
这不应该发生在 Java 9. 有什么想法吗?这是我两天前下载的所谓的早期访问版本。 Java9 的正式发布时间是 2017 年 9 月 21 日(昨天)。不幸的是,Mac OSX 还没有发布版本。 难不成这个功能真的还没有在抢先体验版本(应该接近最终版本)中实现吗?
希望有人能在这里提供帮助。
jshell returns 对 System.getProperty("jdk.tls.server.enableStatusRequestExtension") 的调用为空,因为 属性 不存在。我在 Java 9.
下得到相同的结果您似乎期望 属性 自动存在于 Java 9 下,但事实并非如此;您仍然需要显式创建它,并为其赋值 "true"。来自 JEP 249,在 Java 9 中实现了此功能:
The implementation will choose reasonable defaults for OCSP specific parameters, and will provide configuration of these defaults via the following system properties...
这并不意味着所有 OCSP 属性都自动存在于 Java 9 中并具有默认设置;这意味着如果没有这些 OCSP 系统属性,代码将 "choose reasonable defaults"。例如,如果服务器无法读取 属性 jdk.tls.server.enableStatusRequestExtension 实现 将(合理地)表现得好像 属性 已设置了一个值"false"。
另请参阅 Oracle presentation on security 中的 OCSP 代码示例:
// Enable OCSP Stapling (off by default) System.setProperty(“jdk.tls.server.enableStatusRequestExtension”, “true”); // Yes, that’s really it!
所以我建议您根据需要明确设置 OCSP 的客户端和服务器属性,不要担心它们在 Java 9.
下不存在TLDR 版本:Java9 支持 TLS 的 OCSP 装订,但假定在用户没有任何明确配置的情况下它不会启用。