[Java] SSLContext with client certificate

If you want to connect somewhere using an ssl-connection you will need an SSLContext object. I had some trouble creating one with a client certificate because it rejected my .p12 file or other things broke.
Just c&p and adjust the following snippet to your needs…

private static SSLContext getSSLContext(File pKeyFile, String pKeyPassword) throws Exception {
	KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
	KeyStore keyStore = KeyStore.getInstance("PKCS12");

	InputStream keyInput = new FileInputStream(pKeyFile);
	keyStore.load(keyInput, pKeyPassword.toCharArray());
	keyInput.close();

	keyManagerFactory.init(keyStore, pKeyPassword.toCharArray());

	SSLContext context = SSLContext.getInstance("TLS");
	context.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());

	return context;
}

… and call it with something like this:

SSLContext sslcontext = getSSLContext(new File("ssl/myKeyFile.p12"), "VerySecurePassword");

You can create everything you need with it, so have fun 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site uses Akismet to reduce spam. Learn how your comment data is processed.