Рейтинг:0

Устранение неполадок при рукопожатии между приложением и внешним API

флаг kz

Это может быть немного далеко, но я надеюсь, что кто-то здесь может мне помочь. У меня есть 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?

Рейтинг:0
флаг kz

Я понял источник проблемы. Для API UPS требуется по крайней мере один шифр из определенного списка, и на моем сервере приложений не установлено ни одного из совместимых шифров. Выяснение того, как исправить ЭТУ проблему, выходит за рамки этого вопроса, поэтому я создал здесь еще один вопрос: Как добавить дополнительные наборы шифров на сервер приложений Java?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.