我安装了Java 9,因为我想在TLS握手(即OCSP装订)中使用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上。任何想法为什么?这是我两天前下载的所谓的Early Access版本。 Java 9的正式版本是2017年9月21日(昨天)。不幸的是,Mac OSX还没有发布的版本。 真的可能是这个功能还没有在Early Access Build中实现(它应该接近最终版本)?
希望任何人都能在这里提供帮助。
答案 0 :(得分:0)
对于 System.getProperty(" jdk.tls.server.enableStatusRequestExtension")的调用,jshell返回null,因为该属性不存在。我在Java 9下得到了相同的结果。
您似乎希望该属性在Java 9下自动存在,但事实并非如此;你仍然需要明确地创建它,并为它赋值" true"。来自JEP 249,在Java 9中实现此功能:
实施将为OCSP特定参数选择合理的默认值,并将通过以下方式提供这些默认值的配置 以下系统属性......
这并不意味着所有OCSP属性都在Java 9中自动存在,并带有默认设置;这意味着在没有这些OCSP系统属性的情况下,代码将选择合理的默认值"。例如,如果服务器无法读取属性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版本:Java 9支持针对TLS的OCSP装订,但假设在没有来自用户的任何显式配置的情况下未启用它。