Привет, я работаю над задачей, которая требует от меня выполнения HTTPS-вызова на сервер. Этот сервер требует, чтобы наш сертификат в заголовке запроса был добавлен отдельно с параметрами заголовка как «clientCert». Я просмотрел много ссылок о том, как это можно сделать, но я не мог сделать это возможным. И возможно, что ничего не понял из данного решения.
Я хочу отправить сертификат в заголовке запроса с параметром заголовка «clientCert». Может ли кто-нибудь помочь мне в этом. Пожалуйста, не рассматривайте это как дубликат любой другой ссылки SO, поскольку они не работали для меня. Я использую Spring Boot, пожалуйста, найдите мой код ниже.
@Configuration
public class SSLConfig{
private static final String KEY_PASS="password"
static{
System.setProperty("javax.net.ssl.trustStore", SSLConfig.class.getClassLoader().getResource("client.jks").getFile())
System.setProperty("javax.net.ssl.trustStorePassword", KEY_PASS)
System.setProperty("javax.net.ssl.keyStore", SSLConfig.class.getClassLoader().getResource("client.jks").getFile())
System.setProperty("javax.net.ssl.keyStorePassword", KEY_PASS)
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new HostNameVerifier(){
public boolean verify(String hostname, SSLSession sslSession){
return "serverhostname".equals(hostname);
}
});
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate()
}
}
А затем в моем сервисе
@Service
public class ConnectorService{
@Autowired
RestTemplate restTemplate;
public void getData(){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("clientCert", <Here I need put my X509 certificate>);
HttpEntity entity = new HttpEntity<>(headers);
ResponseEntity<String> response =
restTemplate.exchange("https://www.test.com/getData",HttpMethod.POST, entity, String.class);
System.out.println(response.getBody());
}
}