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
Post a Comment