【问题标题】:How to upgrade http protocol TLS1.2 in groovy application如何在groovy应用中升级http协议TLS1.2
【发布时间】:2019-09-07 13:44:31
【问题描述】:

我在 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】:

    首先,并不是所有的 jvm 版本都支持 TLS 1.2 版。如果您使用的是 oracle jvm,如果在 java 1.6 上,它需要是 java 1.6.0.121 或更高版本,如果在 java 1.7 任何更高版本的 jvm(即Java 8、Java 9 等)。

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

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

    从阅读文档看来,https.protocols 设置也应该可以工作,但我从使用jdk.tls.client.protocols 配置大量服务器 jvm 中知道它可以工作。请注意,这是为了让服务器 jvm 在向 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 =,但不会打印系统属性。

    尝试显式括号:

    println("protocol in bootstrap = "+System.getProperty("https.protocols"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 2021-02-25
      • 1970-01-01
      • 2014-07-23
      • 2015-08-20
      • 1970-01-01
      相关资源
      最近更新 更多