Каковы причины ошибки netty Java «handshake_failure at remote address»? - PullRequest
0 голосов
/ 27 апреля 2018

Я в основном создаю эту страницу для устранения этой проблемы, но также потому, что Google возвращает 0 результатов для этой указанной ошибки в заголовке.

Внутренний клиент моего устаревшего веб-приложения Tomcat7 недавно обновил свой сертификат SSL до TLS1.2, и теперь мои производственные системы не могут подключиться. Этой кодовой базе 5 лет и МАССИВ. Я не могу просто перейти на JDK 1.8 без серьезной операции.

В моей Mac OSX Intellij IDE я использую 1.7.0_u141 , и он отлично работает , он может подключиться к клиенту и данные возвращаются! НО, используя 1.7.0_79 в моей IDE, я могу воспроизвести ошибку и выполнить отладку в коде Java, который пытается выполнить рукопожатие SSL.

Я попытался обновить сервер CentOS 6.6 для использования 1.7.0_131 (та же ошибка), я обнаружил 1.7.0_151b32 в «интернете» (то есть не из oracle, но выглядит вполне законно) и попробовал его на не прод-сервере с этой проблемой я по-прежнему получаю исключение SSLHandshakeException: (данные маскируются и меняются, поэтому безопасность не будет на меня кричать)

com.twitter.finagle.SslHandshakeException: Received fatal alert: handshake_failure at remote address: client.example.com/##.##.##.##:443,DefaultHttpRequest(chunked: false)
GET /BClass/LocationStatusLookup?id=################### HTTP/1.1
Host: client.example.com
Accept-Encoding: gzip, deflate
,Some(com.twitter.finagle.ChannelWriteException: com.twitter.finagle.SslHandshakeException: Received fatal alert: handshake_failure at remote address: client.example.com/##.##.##.##:443))

Я попытался передать эти аргументы в tomcat7 setenv.sh:

-Dhttps.protocols="TLSv1,TLSv1.1,TLSv1.2" 
-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"

Разницы пока нет.

Я также попытался загрузить сертификат в браузере, преобразовав его в x509 с помощью openssl и импортировав его в jks (хранилище ключей Java).

Что-нибудь еще, что я могу сделать?

...