Skip to content

Instantly share code, notes, and snippets.

@usmansaleem
Created December 24, 2019 03:02
Show Gist options
  • Save usmansaleem/e3780e1d548ed2bfa9e05367f19916a1 to your computer and use it in GitHub Desktop.
Save usmansaleem/e3780e1d548ed2bfa9e05367f19916a1 to your computer and use it in GitHub Desktop.
OkHttp3 TLS Enabled Client with custom PKCS12 Trust Store
OkHttpClient getTlsEnabledOkHttpClient() {
try {
final KeyStore keyStore = KeyStore.getInstance("pkcs12");
try (final InputStream keystoreStream =
ClassLoader.getSystemResource(KEYSTORE_RESOURCE).openStream()) {
keyStore.load(keystoreStream, "changeit".toCharArray());
} catch (IOException e) {
throw new RuntimeException("Unable to load keystore.", e);
}
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
// build custom sslcontext with our custom trust manager
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagerFactory.getTrustManagers(), new SecureRandom());
// create okhttp client with custom ssl socket factory
return new OkHttpClient.Builder()
.sslSocketFactory(
sslContext.getSocketFactory(),
(X509TrustManager) trustManagerFactory.getTrustManagers()[0])
.build();
} catch (GeneralSecurityException e) {
throw new RuntimeException(e);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment