In order for a Java client to authenticate with JBoss EAP over SSL the following steps will need to be performed:
- Create keystores for the server and client
- Configure a HTTPS connector in JBoss EAP
- Include the SSL configuration in your client application
Create keystores for the server and client
The following steps describe how to create
keystores for the server and the client and how to import these keystores into the truststores. In order for this exercise the keys generated are
self-signed.
In order to complete the below you will need Java installed and the Java bin directory added to your systems Path variable.
Server keystore
Create the server's keystore
- Open a terminal / command prompt
- Run the following command:
keytool -genkeypair -alias jbossweb -keyalg RSA -keysize 1024 -keystore jbossweb.keystore -validity 3650 -keypass jbosswebpass -storepass jbosswebpass
- -genkeypair (previously named genkey)
- -alias
- alias name of the entry to process
- -keyalg
- -keysize
- -keystore
- -keypass
- -storepass
Export the server's public key
- Run the following command:
keytool -exportcert -alias jbossweb -keystore jbossweb.keystore -file jbossweb.cer -keypass jbosswebpass -storepass jbosswebpass
- -exportcert (previously named export)
- -alias
- alias name of the entry to process
- -keystore
- -file
- -keypass
- -storepass
Client keystore
Create the client's keystore private/public key
- Run the following command:
keytool -genkeypair -alias client -keyalg RSA -keysize 1024 -keystore client.keystore -keypass clientpass -storepass clientpass -validity 3650
- -genkeypair (previously named genkey)
- -alias
- alias name of the entry to process
- -keyalg
- -keysize
- -keystore
- -keypass
- -storepass
- -validity
Export the client's public key
- Run the following command:
keytool -exportcert -alias client -file client.cer -keystore client.keystore -keypass clientpass -storepass clientpass
- -exportcert (previously named export)
- -alias
- alias name of the entry to process
- -file
- -keystore
- -keypass
- -storepass
Server truststore
- Add the client's public key to the truststore of the server
keytool -importcert -trustcacerts -alias client -file client.cer -keystore jbossweb.keystore -keypass jbosswebpass -storepass jbosswebpass
- importcert (previously named import)
- Imports a certificate or a certificate chain
- -trustcacerts
- trust certificates from cacerts
- -alias
- alias name of the entry to process
- -file
- -keystore
- -keypass
- -storepass
Client truststore
- Add the server's public key to the truststore of the client
keytool -importcert -trustcacerts -alias jbossweb -file jbossweb.cer -keystore client.keystore -keypass clientpass -storepass clientpass
- importcert (previously named import)
- Imports a certificate or a certificate chain
- -trustcacerts
- trust certificates from cacerts
- -alias
- alias name of the entry to process
- -file
- -keystore
- -keypass
- -storepass
More information on how to use the keytool command can be found
here.
Configure a HTTPS connector in JBoss EAP 6
- Open the JBoss EAP configuration file for your server, for example if you are using default standalone configuration then open the standalone.xml within the JBOSS_HOME/bin directory.
- Add a HTTPS connector to the org.jboss.as.web subsystem. You can add it after the HTTP connector that should already be there, example:
- Within your standalone client application the following properties will need to be set to point to the client's keystore/truststore.
- Adding these system properties will set the keystore/truststore for the whole JVM.
System.setProperty("javax.net.ssl.keyStore", "/path/to/client.keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "clientpass");
System.setProperty("javax.net.ssl.trustStore", "/path/to/client.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "clientpass");
- Once those properties are set you should be able to make the necessary HTTPS call (an example would be a webservice request over SSL).