I am getting No required SSL certificate was sent
I am using below code get RestTemplate.
SSLSocketFactory ssl=this.getKeyStoreFactory();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(connectTimeout);
requestFactory.setReadTimeout(readTimeout);
requestFactory.setConnectionRequestTimeout(requestTimeout);
requestFactory.setHttpClient(getHttpClient(ssl));
return new RestTemplate(requestFactory);
Method to get httpclinet.
private HttpClient getHttpClient(SSLSocketFactory sslContext) {
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(
connTtl, TimeUnit.MILLISECONDS);
poolingHttpClientConnectionManager.setMaxTotal(connPoolMaxSize);
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(connPoolMaxRouteSize);
poolingHttpClientConnectionManager.setValidateAfterInactivity(connPoolInvalidateThreshold);
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
return httpClient;
}
and getting keystore and Trust Store ,taking location from config
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
try {
keyStore.load(Files.newInputStream(ResourceUtils.getFile(keyStorePath).toPath()), keyStorePwd.toCharArray());
trustStore.load(Files.newInputStream(ResourceUtils.getFile(keyStorePath).toPath()), keyStorePwd.toCharArray());
}catch (Exception e){
error("Exception while createing fsv reset template","FF10",e,null);
}
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trustStore);
keyManagerFactory.init(keyStore,keyStorePwd.toCharArray());
SSLContext sslContext = SSLContext.getInstance("TL_SV_1");
// Initialize our SSL context from the key/trust managers
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
return sslContext.getSocketFactory();
You need to sign in to view this answers
Leave feedback about this