SSL context in Java

These are steps I usually use to create SSL Context :

Step 1: Create Private Key Store

char[] password = "my-password".toCharArray();
KeyStore keyStore = KeyStore.getInstance("XXX");

keyStore.load(null, null);
keyStore.setKeyEntry("key-alias", this.readPrivateKey(), password, this.readCertificateChain().toArray(new Certificate[0]));

Step 2: Create Key Manager Factory

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

keyManagerFactory.init(keyStore, password);

Step 3: Create Trust Store

KeyStore trustStore = KeyStore.getInstance("XXX");
trustStore.load(null, null);

for (X509Certificate crt : this.readRootCertificateChain()) {
    trustStore.setCertificateEntry("alias-name", crt);
}

Step 4: Create Trust Manager Factory

TrustManagerFactory trustMangerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

trustMangerFactory.init(trustStore);

Step 5: Create SSL Context

SSLContext sslContext = SSLContext.getInstance("PROTOCOL");
sslContext.init(keyManagerFactory.getKeyManagers(), trustMangerFactory.getTrustManagers(), null);

Step 6: Create SSL Handler

SSLEngine sslEngine = sslContext.createSSLEngine();

sslEngine.setUseClientMode(true);

SslHandler sslHandler = new SslHandler(sslEngine);
sslHandler.setHandshakeTimeoutMillis(handshakeTimeout);

 

Comments

Popular Posts