@Autowired private ResourceLoader resourceLoader; @Bean public SSLContext sslContext() throws Exception { //load the keystore file as input stream InputStream keystoreStream = resourceLoader.getResource(keyStoreFile).getInputStream(); KeyManagerFactory keyManagerFactory = KeyManagerFactory .getInstance(KeyManagerFactory.getDefaultAlgorithm()); //get instance of keystore depends on type of store here we have //pkcs12 KeyStore keyStore = KeyStore.getInstance("PKCS12"); try { keyStore.load(keystoreStream, keyStorePass.toCharArray()); } finally { keystoreStream.close(); } keyManagerFactory.init(keyStore, keyStorePass.toCharArray()); KeyManager[] keyManagers = keyManagerFactory.getKeyManagers(); //load trust store file as input stream KeyStore trustStore = KeyStore.getInstance("PKCS12"); InputStream truststoreSteam = resourceLoader.getResource(trustStoreFile).getInputStream(); try { //load trust store trustStore.load(truststoreSteam, trustStorePassword.toCharArray()); } finally { truststoreSteam.close(); } TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(trustStore); SSLContext sslcontext = SSLContext.getInstance("TLS"); //initialize ssl context with both key manager and trust manager sslcontext.init(keyManagers, tmf.getTrustManagers(), null); //return sslContext return sslcontext; }