Включить 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-приложений.
- Получение Chrome для принятия самоподписанного локального сертификата
- SSL / TLS vs SSL / TLS-VPN
- ASP.NET MVC RequireHttps только в производстве
- Как извлечь CN из X509Certificate в Java?
- Как установить: OpenSSL + WAMP
Как я могу административно включить 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)
- Запрос на перекрестный запрос заблокирован
- Использование JavaMail с TLS
- Предупреждения Firefox «Неверное подключение» при посещении уважаемых сайтов HTTPS при использовании учетной записи ребенка
- Как легко создать сертификат SSL и настроить его в Apache2 в Mac OS X?
- веб-просмотр android с сертификатом клиента
- Вызывается SSL-вызов Invoke-WebRequest?
- Apache HttpClient на Android, производящем CertPathValidatorException (имя_отчета! = Имя_почты)
- Как создать свою собственную цепочку сертификатов?
Вы можете попробовать добавить к сценарию запуска что-то вроде следующего: предполагается, что 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.