2014-04-29 04:57:20 +0000 2014-04-29 04:57:20 +0000
50
50

Включение TLS 1.1 и 1.2 для Клиентов на Java 7

Java 7 отключает TLS 1.1 и 1.2 для Клиентов. Из Java Cryptography Architecture Oracle Providers Documentation :

Хотя SunJSSE в версии Java SE 7 поддерживает TLS 1.1 и TLS 1.2, ни одна из версий не включена по умолчанию для клиентских соединений. Некоторые серверы неправильно реализуют прямую совместимость и отказываются взаимодействовать с клиентами по TLS 1.1 или TLS 1.2. Для интероперабельности SunJSSE не включает TLS 1.1 или TLS 1.2 по умолчанию для клиентских подключений.

меня интересует включение протоколов в настройках всей системы (возможно, через файл конфигурации), а не для решения на основе Java-приложений.

Как мне административно включить TLS 1.1 и 1.2 системная ширина?

Note : поскольку POODLE, я хотел бы административно отключить SSLv3 системная ширина. (Проблемы с SSLv3 предшествуют POODLE не менее чем на 15 лет, но Java/Oracle/Developers не уважают основные лучшие практики, поэтому такие пользователи, как вы и я, остались с очисткой).

  • *

Вот Java-версия:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/bin/java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

Ответы (6)

31
31
31
2015-06-16 08:08:06 +0000

Можно просто добавить следующее свойство -Dhttps.protocols=TLSv1.1,TLSv1.2, которое настраивает JVM на указание того, какая версия протокола TLS должна использоваться во время https соединений.

14
14
14
2014-06-18 16:09:55 +0000

Вы можете попробовать добавить что-нибудь подобное к вашему скрипту запуска, предполагая Java 1.7:

JAVACMD="$JAVACMD -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -D\ deployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true"

Некоторые другие предложения: COPY12_8__will\use_tls

9
9
9
2014-04-29 08:46:24 +0000

Для Java 7 в Mac OS X перейдите в System Preferences > Java, и панель управления Java откроется в отдельном окне. Затем перейдите на вкладку Advanced и прокрутите вниз к секции Advanced Security Settings и установите флажки Use TLS 1.1 и Use TLS 1.2.

8
8
8
2014-11-05 13:12:56 +0000

Я только недавно исследовал это и хочу добавить - это не будет работать для JDK, deployment.properties только для Applets и других вещей, запущенных в JRE.

для JDK приложений (сервер, который должен подключаться к LDAP, например) сервер является клиентом, но deployment.security. не будет работать.

никак не изменит его, если вы не напишете какой-нибудь код, как SSLContext.getInstance(“TLSv1.2”);

4
4
4
2015-06-18 17:42:31 +0000

Похоже на то, что настройки solution.security.* работают для Java-апплетов и программ Java Web Start, запущенных на рабочем столе. Как упоминали здесь другие, вы можете редактировать deployment.properties, чтобы указать это.

Вот статья, которая показывает, как использовать групповую политику для развертывания одного и того же файла deployment.properties для всех пользователей: http://www.darkoperator.com/blog/2013/1/12/pushing-security-configuration-for-java-7-update-10-via-gpo.html

К сожалению, нет способа включить это для всех java-программ на компьютере, которые напрямую вызывают java.exe или javaw.exe. Вы должны найти каждую программу, которая использует java, найти конфигурационный файл, в котором вы указываете параметры для передачи java и изменить их.

Для Tomcat мы должны были передать это так, чтобы соединения от Tomcat к другим серверам использовали TLS 1.1+: -Dhttps.protocols=TLSv1.1,TLSv1.2. На Linux это можно сделать путем редактирования bin/catalina.sh или создания bin/setenv.sh.

Я не знаю, что нужно сделать, чтобы Tomcat использовал только TLS 1.2 на стороне сервера. Мы работаем с Apache HTTP.

1
1
1
2018-07-04 15:02:10 +0000

Если вы застряли с Java 7, вы можете добавить -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2 к аргументам JVM.

Обратите внимание, что это имеет несколько предостережений:

  • Он действителен только начиная с Java 7 обновления 95. Ссылка: https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https
  • Это не общесистемное решение, несмотря на то, что оно может быть установлено в переменную окружения (например, JAVA_OPTS), в этом случае вы зависите от поддержки envvar в ваших Java приложениях.

  • Несмотря на эти недостатки, я думаю, что это может быть полезно, особенно когда протокол, который интересует пользователя, использует TLS, но не HTTPS, например LDAPS.

[UPDATE] В моей компании, которая запускает свой пул серверов на Ubuntu, мы поняли, что даже обновления 121 OpenJDK 7 было недостаточно для корректной реализации этого решения. Мы обновили все серверы до 181 до того, как оно заработало.

Похожие вопросы

8
21
6
10
6