我在grails 2.5.0应用程序上使用groovy,其中我想将TLS1.2设置为使用旧TLS版本。下面的代码我在bootstrap.groovy中设置了,但似乎不起作用,任何帮助表示赞赏。
def init = { servletContext ->
System.setProperty("com.ibm.jsse2.overrideDefaultProtocol","TLSv12")
System.setProperty("https.protocols","TLSv1.2")
println "protocol in bootstrap = "+System.getProperty("https.protocols")
}
但是在println语句中看不到任何内容。
答案 0 :(得分:0)
首先,并非所有的jvm版本都支持TLS 1.2版。如果您使用的是oracle jvm,则在java 1.6上必须为java 1.6.0.121或更高版本,在java 1.7 或上的任何更高版本的jvm(例如,java 1.7.95或更高版本) Java 8,Java 9等)。
假设已解决问题,则需要设置系统属性:
System.properties['jdk.tls.client.protocols'] = 'TLSv1.2'
从阅读文档看来,https.protocols
设置也应该起作用,但是我知道使用jdk.tls.client.protocols
配置大量服务器jvm可以起作用。请注意,这是为了使服务器jvm在向互联网发出请求时(即当它们充当客户端时)使用TLSv1.2。因此,我们在这里谈论的是配置请求的客户端。我假设服务器端需要进行不同的配置。
此外,在您的代码中,语句:
println "protocol in bootstrap = "+System.getProperty("https.protocols")
可能被解释为
println("protocol in bootstrap = ")+System.getProperty("https.protocols")
转换为:
null+System.getProperty("https.protocols")
因为println返回null。这将打印protocol in bootstrap =
,但不打印系统属性。
尝试使用显式括号:
println("protocol in bootstrap = "+System.getProperty("https.protocols"))