Как включить TLSv1.2 в клиенте JAVA 7u80

У нас есть java-приложение, которое работает на Java Version: 1.7.0_80, и мы пытаемся включить TLSv1.2 с аргументом jvm -Dhttps.protocols=TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2-Ddeployment.security.TLSv1=false -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true для использования веб-службы, которая поддерживает только TLSv1.2. Хотя у нас есть Java-клиент с аргументом jvm, все еще использующий TLSv1 для связи с веб-службами,

Как включить TLSv1.2 в клиенте JAVA 7u80 может кто-нибудь помочь мне, есть ли какие-либо конфигурации jvm, которые мне нужно сделать, чтобы использовать TLSv1.2 без изменения кода?

Возможный дубликат Как включить TLS 1.2 в Java 7

Sergei Sirik 28.03.2018 00:00

Я пытаюсь заставить его работать только с изменениями конфигурации в моем случае, без изменения кода

RanPaul 28.03.2018 00:03

Насколько я понимаю, нет. Вам нужно либо обновить Java 7 до последнего патча (я думаю, это 131), либо внести изменения в код.

Sergei Sirik 28.03.2018 00:04

@SergeiSirik: на самом деле не дубликат. В вопросе, который вы упомянули, нет ответа, чтобы указать реальную причину, по которой он не работал: "" системное свойство jdk.tls.client.protocols. Это свойство доступно начиная с Java SE 7u95 ".

Eugène Adell 28.03.2018 00:06

это протокол https для вызова веб-службы

RanPaul 28.03.2018 00:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
5
10 882
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Без изменения кода, как я написал в комментарии, вам понадобится как минимум 7u95.

jdk.tls.client.protocols system property. To enable specific SunJSSE protocols on the client, specify them in a comma-separated list within quotation marks; all other supported protocols are then disabled on the client. For example, if the value of this property is "TLSv1,TLSv1.1", then the default protocol settings on the client for TLSv1 and TLSv1.1 are enabled on the client, while SSLv3, TLSv1.2, and SSLv2Hello are disabled on the client. This propery has been available since Java SE 7u95.

Это свойство также доступно, начиная с Java 6u121, при этом Java 6 поддерживает и реализует TLS 1.2.

Java 7u95 доступна только для бизнес-пользователей. Недоступно для простых пользователей. Думаю, изначально вопрос был о том, как включить TLSv1.2 в Java 7u80. Может ли кто-нибудь помочь с включением TLSv1.2 в 7u80?

Vaibhav Jain 22.11.2018 08:25

Вопрос действительно был для 7u80, и если вы не можете обновить, вам нужно изменить код (одно из решений, приведенных выше по ссылке Сергея Сирика).

Eugène Adell 22.11.2018 09:43

К сожалению, код, указанный в ссылке, работает только для аутентификации sql. Не для проверки подлинности Windows.

Vaibhav Jain 22.11.2018 10:27

Речь идет о включении TLS 1.2. Если у вас возникли трудности с аутентификацией Windows, либо предоставьте код и задайте вопрос по SO, либо спросите на ServerFault.

Eugène Adell 22.11.2018 14:19

Судя по всему, Java 6u161 является «расширенной версией Java SE» и поэтому доступна только платным клиентам. См. stackoverflow.com/questions/45859426/…

Per Lindberg 08.10.2019 10:49

@PerLindberg Вы, наверное, хотели сказать 6u121, и вы правы. Есть ли еще пользователи Java 6?

Eugène Adell 08.10.2019 20:10

Да, 6у121, правильно. И да, я пока застрял на Java 6 / Glassfish 3.1.2.2. Так что мне нужно как-то пересадить на него TLS 1.2.

Per Lindberg 09.10.2019 09:23

@PerLindberg Вам нужен TLS для работы в качестве клиента или сервера? Как сервер, может быть, вам подойдет просто установка обратного прокси перед Glassfish?

Eugène Adell 09.10.2019 18:14

Это для сервера приложений Glassfish. TLS 1.2 должен поддерживаться к марту 2020 года, когда основные браузеры перестанут поддерживать TLS 1.1. Обратный прокси (например, Apache) - отличный обходной путь, но в моем конкретном случае он не подходит.

Per Lindberg 10.10.2019 09:14

@PerLindberg У меня нет исходного кода Glassfish, чтобы проверить, как он вызывает классы SSL. Из того, что я знаю и протестировал на простых программах, вы можете установить поставщика BouncyCastle и запустить Java 6 с TLS 1.2. Чтобы загрузить файлы jar, отредактировать java.security и перезапустить сервер, потребуется 15 минут. Сообщите нам, сработало ли это.

Eugène Adell 10.10.2019 20:48

Эжен, спасибо за предложение. Но это заняло больше 15 минут, так как я не знаком с этим видом магии. :-) Я загрузил и установил bc_fips-1.0.2.jar в ... jdk1.6.0_35 / jre / lib / ext и добавил 'security.provider.9 = org.bouncycastle.jsse.provider.BouncyCas‌ tleJsseProvider' в ... jdk1.6.0_35 / jre / lib / security / java.security. Затем я перезапустил Glassfish. Никакой радости; браузер по-прежнему предупреждает об устаревшей версии TLS. Возможно, в моей консоли администратора Glasfish отсутствует какая-то настройка ...

Per Lindberg 11.10.2019 13:44

@PerLindberg Я думаю, вам нужен bcprov-jdk15to18-164.jar (и bctls-jdk15to18-164.jar?), А не fips, и добавьте поставщика в первую позицию, затем он появится перед SUN JSSE. Все это экспериментально. Где можно скачать такую ​​же Glassfish, как у вас?

Eugène Adell 11.10.2019 22:50

Я попробовал использовать bcprov-jdk15to18-164.jar (из bouncycastle.org/latest_releases.html) и добавил security.provider.1 = org.bouncycastle.jce.provider.BouncyCast‌ leProvider в java.security (и изменил нумерацию существующих провайдеров). Не помогло. Кажется, не существует файла .jar с bctls-jdk15to18-164, только файл .tar.gz с исходными кодами. Мне не пришлось его использовать, так как Glassfish запускается без него. Glassfish 3.1.2.2 можно скачать с oracle.com/java/technologies/ogs-v3122-downloads.html

Per Lindberg 15.10.2019 09:44

@PerLindberg Взгляните на этот вопрос, который показывает, как объявить поставщика. Проверьте еще раз, я вижу bctls-jdk15to18-164.jar на странице последних выпусков.

Eugène Adell 15.10.2019 10:17

Еще раз спасибо, @ Eugène. Я установил bctls-jdk15to18-164.jar и настроил двух поставщиков bouncycastle в java.security. наверное заставил Java TLS работать, но Glassfish не работает. Попытки подключения приводят к появлению сообщения журнала org.bouncycastle.jsse.provider.ProvTlsServer Server raised fatal(2) bad_record_mac(20) alert: Failed to process record org.bouncycastle.tls.TlsFatalAlert: bad_record_mac(20). Кроме того, переход на ssl.KeyManagerFactory.algorithm=PKIX не помог. По-видимому, потребуется еще немного эзотерической магии Стеклянной Рыбы.

Per Lindberg 16.10.2019 13:28

@PerLindberg Могут помочь две вещи: добавление -Djavax.net.debug = all и сетевой захват. Возможно, откройте здесь новый вопрос, потому что ваш вопрос больше о Glassfish, чем о TLS1.2 на устаревшей JVM. Держите нас в курсе

Eugène Adell 16.10.2019 14:59

Другие вопросы по теме