Как обновить протокол HTTP TLS1.2 в Groovy приложения - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть Groovy в приложении Grails 2.5.0, где я хочу установить 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.

1 Ответ

0 голосов
/ 17 апреля 2019

Прежде всего, не все версии jvm поддерживают версию 1.2 TLS.Если вы используете Oracle JVM, это должен быть Java 1.6.0.121 или более поздней версии, если на Java 1.6, Java 1.7.95 или более поздней версии, если на Java 1.7 или любая более высокая версия jvm (т.е. java8, Ява 9 и т. Д.).

Предполагая, что об этом позаботились, вам нужно установить системное свойство:

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

Из чтения документов видно, что настройка https.protocols также должна работать, но я знаю,от настройки большого числа серверов jvms, используя jdk.tls.client.protocols, чтобы он работал.Обратите внимание, что это сделано для того, чтобы сервер jvms использовал TLSv1.2 при отправке запросов в Интернет, т. Е. Когда они действуют как клиенты.Итак, мы здесь говорим о настройке клиентской части запроса.Я предполагаю, что сторона сервера должна быть настроена по-другому.

Кроме того, в вашем коде выражение:

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

, вероятно, интерпретируется как

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

, что означает:

null+System.getProperty("https.protocols")

поскольку println возвращает ноль.Это напечатает protocol in bootstrap =, но не системное свойство.

Попробуйте вместо этого явные символы:

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