Подписание http-запроса выданным сертификатом
Требуется отправлять запрос на стороннее API с сертификатом. В виду реализации стороннего API, ответ всегда с кодом 400, с ContentType text/html. Если отправлять запрос через тот же Postman, то видно, что сервер отвечает "No required SSL certificate was sent".
Для проверки самого API у меня есть сертификат формата pfx, который я подключил в браузер и сам Postman, но требуется также реализовать логику в коде.
Сертификат я сконвертил в .pem формат и положил в Путь_до_джавы/lib/security/cacerts. Ниже приведён код реализации:
HttpPost httpPost = new HttpPost("url-to-client");
httpPost.addHeader("Accept", "application/json;charset=utf-8");
httpPost.addHeader("Content-Type", "application/json;charset=utf-8");
KeyStore trustStore = KeyStore.getInstance(new File(System.getProperty("java.home"), "lib/security/cacerts"), "changeit".toCharArray());
HttpClientBuilder builder = new HttpClientBuilder();
CloseableHttpClient closeableHttpClient = builder
.trustStore(trustStore)
.build();
CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() != 200) {
String errorMessage = String.format("Не удалось отправить данные");
throw new MyBisnessException(errorMessage, statusLine.getStatusCode());
}
Прошу подсказать, что не так, так как подобный функционал реализую впервые.