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

Java 7 отключает TLS 1.1 и 1.2 для клиентов. Из архитектуры криптографии Java Документация Oracle Providers :

Хотя 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 в системе ?

Примечание . Начиная с 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) 

Вы можете попробовать добавить к сценарию запуска что-то вроде следующего: предполагается, что 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"

Некоторые другие предложения: https://blogs.oracle.com/java-platform-group/entry/java_8_will_use_tls

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

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

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

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

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

Введите описание изображения здесь

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

Вот статья, в которой показано, как использовать групповую политику для развертывания одного и того же файла deployment.properties для всех пользователей: http://www.darkoperator.com/blog/2013/1/12/push-security-configuration-for- Java-7-обновление-10-через-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.

  • Javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL-квитирование отменено: ошибка в библиотеке SSL, обычно ошибка протокола
  • SSLHandshakeException Цепочный якорь для пути сертификации не найден Android HTTPS
  • Выбор SSL-сертификата клиента в Java
  • Правильное переключение между HTTP и HTTPS с использованием .htaccess
  • Использование SSL и SslStream для одноранговой аутентификации?
  • HTTPS GET (SSL) с Android и самозаверяющим сертификатом сервера
  • Как правильно установить сертификат, выданный мне?
  • Доверяйте всем сертификатам, используя HttpClient over HTTPS
  • Как запустить мое приложение в качестве суперпользователя из Eclipse?
  • Https Connection Android
  • Сертификаты клиента Java через HTTPS / SSL
  • Interesting Posts

    Как издеваться над новой датой () в java с помощью Mockito

    В чем разница между режимами Release и Debug в Visual Studio?

    Как настроить Maven для автономной разработки?

    Получите размер UIImage (длина байтов), а не высота и ширина

    Десять внешних жестких дисков через USB-концентратор

    Самый быстрый способ итерации массива в Java: переменная цикла vs увеличена для оператора

    Как открыть / отобразить документы (.pdf, .doc) без внешнего приложения?

    В чем разница между строго типизированным языком и статически типизированным языком?

    Событие jQuery click не работает в мобильных браузерах

    Является ли стандартный мандат преобразованием переменной lvalue-rval переменной указателя при применении косвенности?

    Когда функция constexpr получает оценку во время компиляции?

    Когда внешние фигурные скобки опущены в списке инициализаторов?

    Согласование памяти – происходит до отношения в Java

    Confused об Angularjs, заключаемых и изолирующих областях и привязках

    Может ли BitLocker в Windows 7 или 8 уведомлять сервера или администратора о сбоях паролей?

    Давайте будем гением компьютера.