Как настроить Tomcat для использования TLS v1.2 в OUTBOUND-соединениях - PullRequest
0 голосов
/ 08 июня 2018

Мое веб-приложение использует (является клиентом) некоторую службу REST, которая находится за Apigee, и теперь, когда Apigee требуется связь только с TLS v1.2, мы, как клиенты этой службы REST, также уведомляемся, что наши запросы будутотказано, если мы не настроим наше веб-приложение для использования более новой версии TLS.

Я использую Java 7 и Tomcat 7, и я знаю, что эти Java и Tomcat поддерживают соединения TLS v1.2 из коробки,но У меня нет настроенного SSL / TLS на сервере Tomcat , поскольку я использую Tomcat только в качестве HTTP и исходящего прокси-сервера для связи SSL.

Вопрос 1:
Есть ли способ проверить, какие запросы отправляет мое веб-приложение на Tomcat, и будут ли эти запросы отклоняться сервером, который принимает только TLS v1.2?

Вопрос 2:
Если он не настроен по умолчанию, как настроить его на Tomcat?Я нашел это в официальном документе , но мне интересно, влияет ли это только на INBOUND или также на OUTBOUND соединения.

1 Ответ

0 голосов
/ 08 июня 2018

Можно ли проверить, какие запросы отправляет мое веб-приложение на Tomcat, и будут ли эти запросы отклоняться сервером, который принимает только TLS v1.2?

Выполнитьс системным свойством javax.net.debug=ssl - обычно лучше всего установить в CATALINA_OPTS в setenv.sh или setenv.bat, хотя могут быть и другие методы - и захватить довольно объемную трассировку, записанную в стандартный вывод - как это сделать, зависит отваше окружение.Это будет регистрировать все соединений SSL / TLS в процессе JVM, но, поскольку вы не используете входящие SSL / TLS (HTTPS), это не должно быть проблемой.

В качестве альтернативы, захват изсеть с Wireshark или tcpdump или аналогичным;это может потребовать наличия прав root или некоторых (Linux), но может быть отфильтровано только для интересующего соединения.

Да, если вы (через Java) отправляете рукопожатия, которые не предлагают 1.2, а сервер требует (только) 1.2, рукопожатия завершатся неудачей.

Если это не такнастроено по умолчанию, как настроить его на Tomcat?Я узнал об этом из официального документа, но мне интересно, влияет ли это только на INBOUND или также на OUTBOUND соединения.

Да, это влияет только на входящие соединения SSL / TLS (HTTPS).Код Tomcat обычно обрабатывает только входящие соединения HTTP или HTTPS;любые исходящие соединения явно указаны в вашем коде или коде библиотеки, который вы называете, например, драйвер базы данных.

В бесплатных версиях Oracle Java 7 реализовано TLS 1.2, но отключено это (и 1.1 также) для клиентской стороны по умолчанию.Как это изменить, зависит от того, как ваш код устанавливает соединения, например, через какую библиотеку, и вы не предоставили никакой информации об этом.Есть много вопросов стека об этом (многие из них много лет назад), таких как:

https://superuser.com/questions/747377/enable-tls-1.1-and-1.2-for-clients-on-java-7
получение javax.net.ssl.SSLException: получено фатальноalert: protocol_version при очистке данных с помощью Jsoup
Включить TLS 1.2 на стороне клиента JDK7
Как включить исходящую связь TLSv1.1 + из веб-приложения на Win10 / Tomcat7 /Java7?
Сервер закрывает соединения, выполненные с использованием httpclient и Java 7
SSLHandshakeException: закрытое соединение удаленного хоста во время рукопожатия
Как включить TLS1.2 в Java 7
TLS 1.2 поддерживался в Java 8, но не в Java 7

Последние два указывают, что если вы платите за контракт на поддержку Oracle, вы можетепросто обновить до 7u131 (или лучше).Или, если вы (можете) использовать OpenJDK.

...