Устранение неполадок, связанных с ошибкой рукопожатия между приложением и внешним API

. Это может быть немного долго, но я надеюсь, что кто-нибудь из присутствующих сможет мне помочь. У меня есть 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 ERROR [STDERR] Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959)
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:702)
2021-10-28 10:00:00,142 ERROR [STDERR]  at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
2021-10-28 10:00:00,142 ERROR [STDERR]  at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
2021-10-28 10:00:00,142 ERROR [STDERR]  at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
2021-10-28 10:00:00,142 ERROR [STDERR]  at org.apache.commons.httpclient.methods.StringRequestEntity.writeRequest(Unknown Source)
2021-10-28 10:00:00,142 ERROR [STDERR]  at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(Unknown Source)
2021-10-28 10:00:00,142 ERROR [STDERR]  at org.apache.commons.httpclient.HttpMethodBase.writeRequest(Unknown Source)
2021-10-28 10:00:00,142 ERROR [STDERR]  at org.apache.commons.httpclient.HttpMethodBase.execute(Unknown Source)
2021-10-28 10:00:00,142 ERROR [STDERR]  at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Unknown Source)
2021-10-28 10:00:00,142 ERROR [STDERR]  at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(Unknown Source)
2021-10-28 10:00:00,143 ERROR [STDERR]  at org.apache.commons.httpclient.HttpClient.executeMethod(Unknown Source)
2021-10-28 10:00:00,143 ERROR [STDERR]  at org.apache.commons.httpclient.HttpClient.executeMethod(Unknown Source)

Насколько я могу судить, это проблема с запросом ssl. По какой-то причине наше приложение отклоняет ответ от API как небезопасный. К сожалению, я немного не понимаю, что делать, чтобы исправить это. Как определить, где именно произошел сбой? Как мне выяснить, какие изменения мне нужно внести в мое приложение и/или прокси-сервер, чтобы наладить связь между моим приложением и внешним API?

0
задан 28 October 2021 в 14:50
1 ответ

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

0
ответ дан 28 October 2021 в 19:36

Теги

Похожие вопросы