Jeśli chcesz korzystać z RestTemplate
do wysyłania zapytań do serwerów HTTPS, nie musisz robić niczego specjalnego, o ile serwer ma prawidłowo skonfigurowane certyfikaty SSL/TLS i są one zaufane przez domyślne zaufane urzędy certyfikacji (CA) w JDK.
Jeśli musisz korzystać z niestandardowego trust store lub wprowadzić inne niestandardowe ustawienia SSL, musisz skonfigurować niestandardowy HttpClient
dla RestTemplate
. Oto przykład:
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.security.KeyStore;
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() throws Exception {
// Załaduj niestandardowy trust store, jeśli to konieczne
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
// Załaduj trust store z pliku lub innego źródła
SSLContext sslContext = SSLContextBuilder.create()
.loadTrustMaterial(trustStore, null)
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLContext(sslContext)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
return new RestTemplate(factory);
}
}
Powyższa konfiguracja pozwala RestTemplate
na używanie niestandardowego trust store, co jest przydatne w przypadku pracy z własnymi certyfikatami SSL.