This guide walks you through the steps to configure SKSO with TLS Client Authentication.
Following are required to follow this guide:
Access to strongauth account on the VMs where SKSO is installed.
Root/Subordinate CA Certificates from your PKI which will be used to verify Client certificates/
An End Entity/ Client certificate to access SKSO after TLS Client Auth setup is complete
SSH into the SKSO VM as strongauth user
Import the trusted Root/Subordinate certificates of the end-entity certificates into the Payara cacerts.p12 TrustStore file in the config directory. Run the following command for the Root certificate and Subordinate(if any) with different aliases.
$ keytool -import -keystore /usr/local/strongauth/payara6/glassfish/domains/domain1/config/cacerts.p12 -file <certificate-filename>.pem -alias <alias-name-for-the-certificate>
Create a SKSO BCFKS TrustStore for the trusted Root/Subordinate certificates that SKSO will use to perform PKIX validation.
$ keytool -importcert -file <certificate-file>.pem -keystore skso-truststore.bcfks -alias <alias-name-for-the-certificate> -storetype BCFKS -providername BCFIPS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath /usr/local/strongauth/lib/bc-fips-1.0.2.3.jar
When you run this command, keytool will ask for the password you want to use for this truststore use any desired password. Keep a note of the password and location of the generated truststore, they will be used for configuration properties in step 5.
Enable TLS Client Auth for http-listener-2 in Payara configuration by running the following command.
$ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.client-auth-enabled=true
Configure SKSO Properties to enable TLS Client Authentication;
Enable PKIX Client Certificate validation by changing skso.cfg.property.pkix.clientauth property to true, specify PKIX TrustStore path for SKSO which you created in step 3 by changing skso.cfg.property.pkix.truststore.location property and specify the password for that TrustStore by changing the skso.cfg.property.pkix.truststore.password property.
Following are all the TLS Client Auth related properties:
# Should perform Client Auth Certificate PKIX Validation skso.cfg.property.pkix.clientauth=false # Truststore for PKIX validation skso.cfg.property.pkix.truststore.location=/usr/local/strongauth/skso/etc/skso-truststore.bcfks # Truststore password for PKIX validation skso.cfg.property.pkix.truststore.password=changeit