如何在groovy应用程序中升级http协议TLS1.2

问题描述 投票:0回答:1

我在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语句中看到任何内容。

java http grails groovy tls1.2
1个回答
0
投票

首先,并非所有jvm版本都支持TLS 1.2版。如果你使用的是oracle jvm,它需要是java 1.6.0.121或更高版本,如果在java 1.6,java 1.7.95或更高版本,如果在java 1.7或更高版本的jvm(即java 8,java 9等) 。

假设已经处理好了,您需要设置系统属性:

System.properties['jdk.tls.client.protocols'] = 'TLSv1.2'

通过阅读文档似乎https.protocols设置也应该工作,但我知道从配置大量服务器jvms使用jdk.tls.client.protocols它的工作原理。请注意,这是为了使服务器jvms在向Internet发出请求时使用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 =但不打印系统属性。

尝试明确的parens:

println("protocol in bootstrap = "+System.getProperty("https.protocols"))
© www.soinside.com 2019 - 2024. All rights reserved.