Это может быть немного далеко, но я надеюсь, что кто-то здесь может мне помочь. У меня есть java-приложение, работающее на бэкэнде jboss на сервере debian linux. Входящие сообщения перенаправляются на правильный бэкэнд с помощью haproxy на другом сервере.
Одной из задач приложения является предоставление пользователю информации о доставке. Для этого он отправляет запрос POST стороннему API, предоставленному UPS (https://www.ups.com/us/en/services/technology-integration/online-tools-tracking.page?) и отображение результатов. Недавно функция отслеживания в нашем приложении начала выдавать ошибки. Копаясь в журналах нашего приложения, я нашел это:
2021-10-28 10:00:00,142 ОШИБКА [STDERR] Причина: javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:702)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] в java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] на org.apache.commons.httpclient.methods.StringRequestEntity.writeRequest(неизвестный источник)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] на org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody (неизвестный источник)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] на org.apache.commons.httpclient.HttpMethodBase.writeRequest(неизвестный источник)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] на org.apache.commons.httpclient.HttpMethodBase.execute(неизвестный источник)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] на org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(неизвестный источник)
2021-10-28 10:00:00,142 ОШИБКА [STDERR] на org.apache.commons.httpclient.HttpMethodDirector.executeMethod(неизвестный источник)
2021-10-28 10:00:00,143 ОШИБКА [STDERR] в org.apache.commons.httpclient.HttpClient.executeMethod (неизвестный источник)
2021-10-28 10:00:00,143 ОШИБКА [STDERR] в org.apache.commons.httpclient.HttpClient.executeMethod (неизвестный источник)
Насколько я могу судить, это проблема с запросом ssl. По какой-то причине наше приложение отклоняет ответ от API как небезопасный. К сожалению, я немного не понимаю, что делать, чтобы исправить это. Как определить, где именно произошел сбой? Как мне выяснить, какие изменения мне нужно внести в мое приложение и/или прокси-сервер, чтобы наладить связь между моим приложением и внешним API?