我已经安装了Java 9,因为我想使用OCSP ()特性与TLS握手,也就是OCSP装订。正如4307382所述,Java9是使用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还没有发布版本。这个特性是否真的还没有在早期访问构建(应该接近最终版本)中实现呢?
希望这里有人能帮忙。
发布于 2017-09-26 19:15:58
对于对System.getProperty("jdk.tls.server.enableStatusRequestExtension")的调用,jshell返回null,因为该属性不存在。我在Java 9下得到了同样的结果。
您似乎期望该属性在Java 9下自动存在,但事实并非如此;您仍然需要显式地创建它,并将其赋值为"true“。在9月249中,它在Java9中实现了这个特性:
实现将为OCSP特定参数选择合理的默认值,并通过以下系统属性提供这些默认值的配置.
这并不意味着所有OCSP属性都自动存在于具有默认设置的Java 9中;这意味着在没有这些OCSP系统属性的情况下,代码将“选择合理的默认值”。例如,如果服务器无法读取属性jdk.tls.server.enableStatusRequestExtension ,则实现将(合理地)表现为设置了值为"false“的属性。
还请参阅来自关于安全性的Oracle演示文稿的OCSP代码示例
//启用OCSP装订(默认情况下关闭) System.setProperty(“jdk.tls.server.enableStatusRequestExtension”,“true”;//是的,就是这样!
因此,我建议您只在必要时显式地为OCSP设置客户端和服务器属性,不要担心它们在Java 9下不存在。
TLDR版本: Java 9支持用于TLS的OCSP装订,但假设在没有来自用户的任何显式配置的情况下不启用它。
https://stackoverflow.com/questions/46359826
复制相似问题