Это немного странная ситуация, но я надеюсь, что кто-то здесь может оказать некоторую помощь. У меня есть устаревшее приложение Java, которое взаимодействует с внешним сторонним API (онлайн-инструменты UPS). Недавно мы получили уведомление о том, что нам необходимо обновить сертификат сервера до 21 января, иначе наши транзакции больше не будут работать.
Наше приложение отправляет ssl-запросы во внешний API через curl-запрос (он ДОЛЖЕН быть curl из-за того, как это приложение разработано, это длинная история и не очень актуальная здесь). Что мне нужно знать, так это то, где мне нужно установить сертификат? У нас есть интерфейсный веб-сервер (Apache), серверная часть jboss и промежуточный сервис HAProxy. Запрос curl выполняется бэкэндом через класс groovy, выполняющий команду curl. Какой из них является внешним API, который ищет сертификат при выполнении рукопожатия ssl?
Если это поможет, вот как выглядит groovy-метод:
public String[] requestTracking(URL-адрес строки, действие строки, номер отслеживания строки, номер лицензии_доступа строки, идентификатор_пользователя строки, пароль строки) {
Строковый запрос = """<?xml version="1.0"?>
<AccessRequest xml:lang="en-US">
<AccessLicenseNumber>${access_license_number}</AccessLicenseNumber>
<UserId>${user_id}</UserId>
<Пароль>${пароль}</Пароль>
</AccessRequest>
<?xml версия="1.0"?>
<TrackRequest xml:lang="en-US">
<Запрос>
<Ссылка на транзакцию>
<CustomerContext>Мой контекст</CustomerContext>
<XpciVersion>1.0001</XpciVersion>
</Ссылка на транзакцию>
<RequestAction>Отследить</RequestAction>
<RequestOption>${action}</RequestOption>
</Запрос>
<ShipmentIdentificationNumber>${trackingNumber}</ShipmentIdentificationNumber>
</TrackRequest>
""";
команда защиты = [
'ш',
'-с',
"curl -s -w '%{http_code}' '${url}' -X POST -d '" + запрос + "'"
];
def proc = command.execute();
def outputStream = новый StringBuffer();
def errorStream = новый StringBuffer();
proc.waitForProcessOutput(outputStream, errorStream);
// System.out.println("ошибка: " + errorStream.toString());
Результат строки = outputStream.toString().trim();
// отделяем код состояния html
Строковый код = результат.подстрока(результат.длина() -3);
Тело строки = результат.подстрока(0,результат.длина() -3);
String[] output = [код, тело];
обратный вывод;
}