Sto utilizzando Spring RESTTemplate sul lato client per effettuare chiamate a un endpoint REST. Il client in questo caso è un'app di Spring e Tomcat è il contenitore di servlet.Perché non riesco a trovare il truststore per un handshake SSL?
Sto riscontrando problemi relativi alla connessione a un endpoint HTTPS. Sto ricevendo un errore che indica che non è possibile trovare un percorso valido per il truststore. Dove posso specificarlo? Questo è fatto a livello del contenitore o del livello di configurazione dell'applicazione (Spring)?
traccia stack:
org.springframework.web.client.ResourceAccessException: I/O error:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target;
nested exception is javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:330)
org.springframework.web.client.RestTemplate.execute(RestTemplate.java:292)
org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:227)
Dove scrivere che il codice? – kamaci
Puoi scriverlo ovunque tu voglia, perché sta facendo una chiamata statica sulla classe SSLContext stessa. Fintanto che lo chiami nello stesso contesto del classloader e prima della prima chiamata HttpClient, dovresti essere pronto. –
Solo per essere sicuri: la modifica del TrustManager di un SSLContext come descritto sopra non è un'azione persistente, giusto? Quindi deve essere fatto ogni volta che si avvia l'applicazione. – ptikobj