diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/jmx/ManagementFactory.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/jmx/ManagementFactory.java
index b41a1ef..24b537b 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/jmx/ManagementFactory.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/jmx/ManagementFactory.java
@@ -109,8 +109,8 @@ public class ManagementFactory {
          if (jmxConnector.getKeyStorePath() != null) {
             jmxConnectorConfiguration.setKeyStorePath(jmxConnector.getKeyStorePath());
          }
-         if (jmxConnector.getKeyStoreProvider() != null) {
-            jmxConnectorConfiguration.setKeyStoreProvider(jmxConnector.getKeyStoreProvider());
+         if (jmxConnector.getKeyStoreType() != null) {
+            jmxConnectorConfiguration.setKeyStoreType(jmxConnector.getKeyStoreType());
          }
          if (jmxConnector.getKeyStorePassword() != null) {
             jmxConnectorConfiguration.setKeyStorePassword(jmxConnector.getKeyStorePassword());
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationDownstreamConfiguration.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationDownstreamConfiguration.java
index 7e8c5cf..b85de11 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationDownstreamConfiguration.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/config/federation/FederationDownstreamConfiguration.java
@@ -52,9 +52,11 @@ public class FederationDownstreamConfiguration extends FederationStreamConfigura
       params.remove(TransportConstants.KEYSTORE_PATH_PROP_NAME);
       params.remove(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME);
       params.remove(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME);
+      params.remove(TransportConstants.KEYSTORE_TYPE_PROP_NAME);
       params.remove(TransportConstants.TRUSTSTORE_PATH_PROP_NAME);
       params.remove(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME);
       params.remove(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME);
+      params.remove(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME);
 
       this.upstreamConfiguration = new TransportConfiguration(transportConfiguration.getFactoryClassName(), params,
                                                               transportConfiguration.getName(), transportConfiguration.getExtraParams());
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
index c441fc0..2add337 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/BackwardsCompatibilityUtils.java
@@ -69,12 +69,16 @@ public class BackwardsCompatibilityUtils {
    public static final String LOCAL_PORT_PROP_NAME = "local-port";
 
    public static final String KEYSTORE_PROVIDER_PROP_NAME = "key-store-provider";
+   
+   public static final String KEYSTORE_TYPE_PROP_NAME = "key-store-type";
 
    public static final String KEYSTORE_PATH_PROP_NAME = "key-store-path";
 
    public static final String KEYSTORE_PASSWORD_PROP_NAME = "key-store-password";
 
    public static final String TRUSTSTORE_PROVIDER_PROP_NAME = "trust-store-provider";
+   
+   public static final String TRUSTSTORE_TYPE_PROP_NAME = "trust-store-type";
 
    public static final String TRUSTSTORE_PATH_PROP_NAME = "trust-store-path";
 
@@ -121,9 +125,11 @@ public class BackwardsCompatibilityUtils {
       OLD_PARAMETERS_MAP.put(TransportConstants.LOCAL_ADDRESS_PROP_NAME, LOCAL_ADDRESS_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.LOCAL_PORT_PROP_NAME, LOCAL_PORT_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, KEYSTORE_PROVIDER_PROP_NAME);
+      OLD_PARAMETERS_MAP.put(TransportConstants.KEYSTORE_TYPE_PROP_NAME, KEYSTORE_TYPE_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.KEYSTORE_PATH_PROP_NAME, KEYSTORE_PATH_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, KEYSTORE_PASSWORD_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, TRUSTSTORE_PROVIDER_PROP_NAME);
+      OLD_PARAMETERS_MAP.put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, TRUSTSTORE_TYPE_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, TRUSTSTORE_PATH_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, TRUSTSTORE_PASSWORD_PROP_NAME);
       OLD_PARAMETERS_MAP.put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, NEED_CLIENT_AUTH_PROP_NAME);
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
index abad1a4..13d0bb6 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
@@ -142,9 +142,11 @@ public class NettyConnector extends AbstractConnector {
    public static final String JAVAX_TRUSTSTORE_PASSWORD_PROP_NAME = "javax.net.ssl.trustStorePassword";
    public static final String JAVAX_TRUSTSTORE_PROVIDER_PROP_NAME = "javax.net.ssl.trustStoreType";
    public static final String ACTIVEMQ_KEYSTORE_PROVIDER_PROP_NAME = "org.apache.activemq.ssl.keyStoreProvider";
+   public static final String ACTIVEMQ_KEYSTORE_TYPE_PROP_NAME = "org.apache.activemq.ssl.keyStoreType";
    public static final String ACTIVEMQ_KEYSTORE_PATH_PROP_NAME = "org.apache.activemq.ssl.keyStore";
    public static final String ACTIVEMQ_KEYSTORE_PASSWORD_PROP_NAME = "org.apache.activemq.ssl.keyStorePassword";
    public static final String ACTIVEMQ_TRUSTSTORE_PROVIDER_PROP_NAME = "org.apache.activemq.ssl.trustStoreProvider";
+   public static final String ACTIVEMQ_TRUSTSTORE_TYPE_PROP_NAME = "org.apache.activemq.ssl.trustStoreType";
    public static final String ACTIVEMQ_TRUSTSTORE_PATH_PROP_NAME = "org.apache.activemq.ssl.trustStore";
    public static final String ACTIVEMQ_TRUSTSTORE_PASSWORD_PROP_NAME = "org.apache.activemq.ssl.trustStorePassword";
 
@@ -226,12 +228,16 @@ public class NettyConnector extends AbstractConnector {
    private int localPort;
 
    private String keyStoreProvider;
+   
+   private String keyStoreType;
 
    private String keyStorePath;
 
    private String keyStorePassword;
 
    private String trustStoreProvider;
+   
+   private String trustStoreType;
 
    private String trustStorePath;
 
@@ -392,12 +398,16 @@ public class NettyConnector extends AbstractConnector {
       localPort = ConfigurationHelper.getIntProperty(TransportConstants.LOCAL_PORT_PROP_NAME, TransportConstants.DEFAULT_LOCAL_PORT, configuration);
       if (sslEnabled) {
          keyStoreProvider = ConfigurationHelper.getStringProperty(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_PROVIDER, configuration);
+         
+         keyStoreType = ConfigurationHelper.getStringProperty(TransportConstants.KEYSTORE_TYPE_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_TYPE, configuration);
 
          keyStorePath = ConfigurationHelper.getStringProperty(TransportConstants.KEYSTORE_PATH_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_PATH, configuration);
 
          keyStorePassword = ConfigurationHelper.getPasswordProperty(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_PASSWORD, configuration, ActiveMQDefaultConfiguration.getPropMaskPassword(), ActiveMQDefaultConfiguration.getPropPasswordCodec());
 
          trustStoreProvider = ConfigurationHelper.getStringProperty(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER, configuration);
+         
+         trustStoreType = ConfigurationHelper.getStringProperty(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_TYPE, configuration);
 
          trustStorePath = ConfigurationHelper.getStringProperty(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_PATH, configuration);
 
@@ -426,9 +436,11 @@ public class NettyConnector extends AbstractConnector {
          trustManagerFactoryPlugin = ConfigurationHelper.getStringProperty(TransportConstants.TRUST_MANAGER_FACTORY_PLUGIN_PROP_NAME, TransportConstants.DEFAULT_TRUST_MANAGER_FACTORY_PLUGIN, configuration);
       } else {
          keyStoreProvider = TransportConstants.DEFAULT_KEYSTORE_PROVIDER;
+         keyStoreType = TransportConstants.DEFAULT_KEYSTORE_TYPE;
          keyStorePath = TransportConstants.DEFAULT_KEYSTORE_PATH;
          keyStorePassword = TransportConstants.DEFAULT_KEYSTORE_PASSWORD;
          trustStoreProvider = TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER;
+         trustStoreType = TransportConstants.DEFAULT_TRUSTSTORE_TYPE;
          trustStorePath = TransportConstants.DEFAULT_TRUSTSTORE_PATH;
          trustStorePassword = TransportConstants.DEFAULT_TRUSTSTORE_PASSWORD;
          crlPath = TransportConstants.DEFAULT_CRL_PATH;
@@ -561,33 +573,41 @@ public class NettyConnector extends AbstractConnector {
 
       final String realKeyStorePath;
       final String realKeyStoreProvider;
+      final String realKeyStoreType;
       final String realKeyStorePassword;
       final String realTrustStorePath;
       final String realTrustStoreProvider;
+      final String realTrustStoreType;
       final String realTrustStorePassword;
 
       if (sslEnabled) {
          if (forceSSLParameters) {
             realKeyStorePath = keyStorePath;
             realKeyStoreProvider = keyStoreProvider;
+            realKeyStoreType = keyStoreType;
             realKeyStorePassword = keyStorePassword;
             realTrustStorePath = trustStorePath;
             realTrustStoreProvider = trustStoreProvider;
+            realTrustStoreType = trustStoreType;
             realTrustStorePassword = trustStorePassword;
          } else {
             realKeyStorePath = Stream.of(System.getProperty(ACTIVEMQ_KEYSTORE_PATH_PROP_NAME), System.getProperty(JAVAX_KEYSTORE_PATH_PROP_NAME), keyStorePath).map(v -> useDefaultSslContext ? keyStorePath : v).filter(Objects::nonNull).findFirst().orElse(null);
             realKeyStorePassword = Stream.of(System.getProperty(ACTIVEMQ_KEYSTORE_PASSWORD_PROP_NAME), System.getProperty(JAVAX_KEYSTORE_PASSWORD_PROP_NAME), keyStorePassword).map(v -> useDefaultSslContext ? keyStorePassword : v).filter(Objects::nonNull).findFirst().orElse(null);
             realKeyStoreProvider = Stream.of(System.getProperty(ACTIVEMQ_KEYSTORE_PROVIDER_PROP_NAME), keyStoreProvider).map(v -> useDefaultSslContext ? keyStoreProvider : v).filter(Objects::nonNull).findFirst().orElse(null);
+            realKeyStoreType = Stream.of(System.getProperty(ACTIVEMQ_KEYSTORE_TYPE_PROP_NAME), keyStoreType).map(v -> useDefaultSslContext ? keyStoreType : v).filter(Objects::nonNull).findFirst().orElse(null);
             realTrustStorePath = Stream.of(System.getProperty(ACTIVEMQ_TRUSTSTORE_PATH_PROP_NAME), System.getProperty(JAVAX_TRUSTSTORE_PATH_PROP_NAME), trustStorePath).map(v -> useDefaultSslContext ? trustStorePath : v).filter(Objects::nonNull).findFirst().orElse(null);
             realTrustStorePassword = Stream.of(System.getProperty(ACTIVEMQ_TRUSTSTORE_PASSWORD_PROP_NAME), System.getProperty(JAVAX_TRUSTSTORE_PASSWORD_PROP_NAME), trustStorePassword).map(v -> useDefaultSslContext ? trustStorePassword : v).filter(Objects::nonNull).findFirst().orElse(null);
             realTrustStoreProvider = Stream.of(System.getProperty(ACTIVEMQ_TRUSTSTORE_PROVIDER_PROP_NAME), trustStoreProvider).map(v -> useDefaultSslContext ? trustStoreProvider : v).filter(Objects::nonNull).findFirst().orElse(null);
+            realTrustStoreType = Stream.of(System.getProperty(ACTIVEMQ_TRUSTSTORE_TYPE_PROP_NAME), trustStoreType).map(v -> useDefaultSslContext ? trustStoreType : v).filter(Objects::nonNull).findFirst().orElse(null);
          }
       } else {
          realKeyStorePath = null;
          realKeyStoreProvider = null;
+         realKeyStoreType = null;
          realKeyStorePassword = null;
          realTrustStorePath = null;
          realTrustStoreProvider = null;
+         realTrustStoreType = null;
          realTrustStorePassword = null;
       }
 
@@ -623,9 +643,9 @@ public class NettyConnector extends AbstractConnector {
 
                SSLEngine engine;
                if (sslProvider.equals(TransportConstants.OPENSSL_PROVIDER)) {
-                  engine = loadOpenSslEngine(channel.alloc(), realKeyStoreProvider, realKeyStorePath, realKeyStorePassword, realTrustStoreProvider, realTrustStorePath, realTrustStorePassword);
+                  engine = loadOpenSslEngine(channel.alloc(), realKeyStoreProvider, realKeyStoreType, realKeyStorePath, realKeyStorePassword, realTrustStoreProvider, realTrustStoreType, realTrustStorePath, realTrustStorePassword);
                } else {
-                  engine = loadJdkSslEngine(realKeyStoreProvider, realKeyStorePath, realKeyStorePassword, realTrustStoreProvider, realTrustStorePath, realTrustStorePassword);
+                  engine = loadJdkSslEngine(realKeyStoreProvider, realKeyStoreType, realKeyStorePath, realKeyStorePassword, realTrustStoreProvider, realTrustStoreType, realTrustStorePath, realTrustStorePassword);
                }
 
                engine.setUseClientMode(true);
@@ -711,14 +731,16 @@ public class NettyConnector extends AbstractConnector {
    }
 
    private SSLEngine loadJdkSslEngine(String keystoreProvider,
+                                      String keystoreType,
                                       String keystorePath,
                                       String keystorePassword,
                                       String truststoreProvider,
+                                      String truststoreType,
                                       String truststorePath,
                                       String truststorePassword) throws Exception {
       SSLContext context = SSLContextFactoryProvider.getSSLContextFactory().getSSLContext(configuration,
-              keystoreProvider, keystorePath, keystorePassword,
-           truststoreProvider, truststorePath, truststorePassword,
+              keystoreProvider, keystoreType, keystorePath, keystorePassword,
+           truststoreProvider, truststoreType, truststorePath, truststorePassword,
            crlPath, trustManagerFactoryPlugin, trustAll);
       Subject subject = null;
       if (kerb5Config != null) {
@@ -743,18 +765,22 @@ public class NettyConnector extends AbstractConnector {
 
    private SSLEngine loadOpenSslEngine(ByteBufAllocator alloc,
                                        String keystoreProvider,
+                                       String keystoreType,
                                        String keystorePath,
                                        String keystorePassword,
                                        String truststoreProvider,
+                                       String truststoreType,
                                        String truststorePath,
                                        String truststorePassword) throws Exception {
 
 
       SslContext context = new SSLSupport()
          .setKeystoreProvider(keystoreProvider)
+         .setKeystoreType(keystoreType)     
          .setKeystorePath(keystorePath)
          .setKeystorePassword(keystorePassword)
          .setTruststoreProvider(truststoreProvider)
+         .setTruststoreType(truststoreType)     
          .setTruststorePath(truststorePath)
          .setTruststorePassword(truststorePassword)
          .setSslProvider(sslProvider)
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
index 726d28d..977b333 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
@@ -92,12 +92,16 @@ public class TransportConstants {
    public static final String LOCAL_PORT_PROP_NAME = "localPort";
 
    public static final String KEYSTORE_PROVIDER_PROP_NAME = "keyStoreProvider";
+   
+   public static final String KEYSTORE_TYPE_PROP_NAME = "keyStoreType";
 
    public static final String KEYSTORE_PATH_PROP_NAME = "keyStorePath";
 
    public static final String KEYSTORE_PASSWORD_PROP_NAME = "keyStorePassword";
 
    public static final String TRUSTSTORE_PROVIDER_PROP_NAME = "trustStoreProvider";
+   
+   public static final String TRUSTSTORE_TYPE_PROP_NAME = "trustStoreType";
 
    public static final String TRUSTSTORE_PATH_PROP_NAME = "trustStorePath";
 
@@ -216,13 +220,17 @@ public class TransportConstants {
 
    public static final int DEFAULT_STOMP_PORT = 61613;
 
-   public static final String DEFAULT_KEYSTORE_PROVIDER = "JKS";
+   public static final String DEFAULT_KEYSTORE_PROVIDER = "SunJSSE";
+   
+   public static final String DEFAULT_KEYSTORE_TYPE = "JKS";
 
    public static final String DEFAULT_KEYSTORE_PATH = null;
 
    public static final String DEFAULT_KEYSTORE_PASSWORD = null;
 
-   public static final String DEFAULT_TRUSTSTORE_PROVIDER = "JKS";
+   public static final String DEFAULT_TRUSTSTORE_PROVIDER = "SunJSSE";
+   
+   public static final String DEFAULT_TRUSTSTORE_TYPE = "JKS";
 
    public static final String DEFAULT_TRUSTSTORE_PATH = null;
 
@@ -381,9 +389,11 @@ public class TransportConstants {
       allowableAcceptorKeys.add(TransportConstants.HOST_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.PORT_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME);
+      allowableAcceptorKeys.add(TransportConstants.KEYSTORE_TYPE_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.KEYSTORE_PATH_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME);
+      allowableAcceptorKeys.add(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.TRUSTSTORE_PATH_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME);
       allowableAcceptorKeys.add(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME);
@@ -449,9 +459,11 @@ public class TransportConstants {
       allowableConnectorKeys.add(TransportConstants.LOCAL_ADDRESS_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.LOCAL_PORT_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME);
+      allowableConnectorKeys.add(TransportConstants.KEYSTORE_TYPE_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.KEYSTORE_PATH_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME);
+      allowableConnectorKeys.add(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.TRUSTSTORE_PATH_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME);
       allowableConnectorKeys.add(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME);
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/CachingSSLContextFactory.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/CachingSSLContextFactory.java
index 8fce20b..33ee434 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/CachingSSLContextFactory.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/CachingSSLContextFactory.java
@@ -41,14 +41,14 @@ public class CachingSSLContextFactory extends DefaultSSLContextFactory {
 
    @Override
    public SSLContext getSSLContext(Map<String, Object> configuration,
-           String keystoreProvider, String keystorePath, String keystorePassword,
-           String truststoreProvider, String truststorePath, String truststorePassword,
+           String keystoreProvider, String keystoreType, String keystorePath, String keystorePassword,
+           String truststoreProvider, String truststoreType, String truststorePath, String truststorePassword,
            String crlPath, String trustManagerFactoryPlugin, boolean trustAll) throws Exception {
-      String sslContextName = getSSLContextName(configuration, keystorePath, keystoreProvider, truststorePath, truststoreProvider);
+      String sslContextName = getSSLContextName(configuration, keystorePath, keystoreProvider, keystoreType, truststorePath, truststoreProvider, truststoreType);
       if (!SSL_CONTEXTS.containsKey(sslContextName)) {
          SSL_CONTEXTS.put(sslContextName, createSSLContext(configuration,
-              keystoreProvider, keystorePath, keystorePassword,
-              truststoreProvider, truststorePath, truststorePassword,
+              keystoreProvider, keystoreType, keystorePath, keystorePassword,
+              truststoreProvider, truststoreType, truststorePath, truststorePassword,
               crlPath, trustManagerFactoryPlugin, trustAll));
       }
       return SSL_CONTEXTS.get(sslContextName);
@@ -57,22 +57,24 @@ public class CachingSSLContextFactory extends DefaultSSLContextFactory {
    /**
     * Obtain the sslContextName :
     *  - if available the 'sslContext' from the configuration
-    *  - otherwise if available the keyStorePath + '_' + keystoreProvider
-    *  - otherwise the truststorePath + '_' + truststoreProvider.
+    *  - otherwise if available the keyStorePath + '_' + keystoreProvider + '_' + keystoreType
+    *  - otherwise the truststorePath + '_' + truststoreProvider + '_' + truststoreType.
     * @param configuration
     * @param keyStorePath
     * @param keystoreProvider
+    * @param keystoreType
     * @param truststorePath
     * @param truststoreProvider
+    * @param truststoreType
     * @return the ley associated to the SSLContext.
     */
-   protected String getSSLContextName(Map<String, Object> configuration, String keyStorePath, String keystoreProvider, String truststorePath, String truststoreProvider) {
+   protected String getSSLContextName(Map<String, Object> configuration, String keyStorePath, String keystoreProvider, String keystoreType, String truststorePath, String truststoreProvider, String truststoreType) {
       String sslContextName = ConfigurationHelper.getStringProperty(TransportConstants.SSL_CONTEXT_PROP_NAME, null, configuration);
       if (sslContextName == null) {
          if (keyStorePath != null) {
-            return keyStorePath + '_' + keystoreProvider;
+            return keyStorePath + '_' + keystoreProvider + '_' + keystoreType;
          }
-         return truststorePath + '_' + truststoreProvider;
+         return truststorePath + '_' + truststoreProvider + '_' + truststoreType;
       }
       return sslContextName;
    }
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/DefaultSSLContextFactory.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/DefaultSSLContextFactory.java
index 46ce450..7ca4af4 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/DefaultSSLContextFactory.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/DefaultSSLContextFactory.java
@@ -29,18 +29,18 @@ public class DefaultSSLContextFactory implements SSLContextFactory {
 
    @Override
    public SSLContext getSSLContext(Map<String, Object> configuration,
-           String keystoreProvider, String keystorePath, String keystorePassword,
-           String truststoreProvider, String truststorePath, String truststorePassword,
+           String keystoreProvider, String keystoreType, String keystorePath, String keystorePassword,
+           String truststoreProvider, String truststoreType, String truststorePath, String truststorePassword,
            String crlPath, String trustManagerFactoryPlugin, boolean trustAll) throws Exception {
       return createSSLContext(configuration,
-              keystoreProvider, keystorePath, keystorePassword,
-              truststoreProvider, truststorePath, truststorePassword,
+              keystoreProvider, keystoreType, keystorePath, keystorePassword,
+              truststoreProvider, truststoreType, truststorePath, truststorePassword,
               crlPath, trustManagerFactoryPlugin, trustAll);
    }
 
    protected SSLContext createSSLContext(Map<String, Object> configuration,
-           String keystoreProvider, String keystorePath, String keystorePassword,
-           String truststoreProvider, String truststorePath, String truststorePassword,
+           String keystoreProvider, String keystoreType, String keystorePath, String keystorePassword,
+           String truststoreProvider, String truststoreType, String truststorePath, String truststorePassword,
            String crlPath, String trustManagerFactoryPlugin, boolean trustAll) throws Exception {
       if (log.isDebugEnabled()) {
          final StringBuilder builder = new StringBuilder();
@@ -53,9 +53,11 @@ public class DefaultSSLContextFactory implements SSLContextFactory {
       }
       return new SSLSupport()
               .setKeystoreProvider(keystoreProvider)
+              .setKeystoreType(keystoreType)
               .setKeystorePath(keystorePath)
               .setKeystorePassword(keystorePassword)
               .setTruststoreProvider(truststoreProvider)
+              .setTruststoreType(truststoreType)
               .setTruststorePath(truststorePath)
               .setTruststorePassword(truststorePassword)
               .setTrustAll(trustAll)
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/SSLSupport.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/SSLSupport.java
index 9e2d319..84a76fe 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/SSLSupport.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/ssl/SSLSupport.java
@@ -56,9 +56,11 @@ import org.apache.activemq.artemis.utils.ClassloadingUtil;
  */
 public class SSLSupport {
    private String keystoreProvider = TransportConstants.DEFAULT_KEYSTORE_PROVIDER;
+   private String keystoreType = TransportConstants.DEFAULT_KEYSTORE_TYPE;
    private String keystorePath = TransportConstants.DEFAULT_KEYSTORE_PATH;
    private String keystorePassword = TransportConstants.DEFAULT_KEYSTORE_PASSWORD;
    private String truststoreProvider = TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER;
+   private String truststoreType = TransportConstants.DEFAULT_TRUSTSTORE_TYPE;
    private String truststorePath = TransportConstants.DEFAULT_TRUSTSTORE_PATH;
    private String truststorePassword = TransportConstants.DEFAULT_TRUSTSTORE_PASSWORD;
    private String crlPath = TransportConstants.DEFAULT_CRL_PATH;
@@ -69,10 +71,19 @@ public class SSLSupport {
    public String getKeystoreProvider() {
       return keystoreProvider;
    }
-
+   
    public SSLSupport setKeystoreProvider(String keystoreProvider) {
       this.keystoreProvider = keystoreProvider;
       return this;
+   }   
+   
+   public String getKeystoreType() {
+      return keystoreType;
+   }
+   
+   public SSLSupport setKeystoreType(String keystoreType) {
+      this.keystoreType = keystoreType;
+      return this;
    }
 
    public String getKeystorePath() {
@@ -96,12 +107,21 @@ public class SSLSupport {
    public String getTruststoreProvider() {
       return truststoreProvider;
    }
-
+   
    public SSLSupport setTruststoreProvider(String truststoreProvider) {
       this.truststoreProvider = truststoreProvider;
       return this;
+   }   
+   
+   public String getTruststoreType() {
+      return truststoreType;
    }
 
+   public SSLSupport setTruststoreType(String truststoreType) {
+      this.truststoreType = truststoreType;
+      return this;
+   }   
+   
    public String getTruststorePath() {
       return truststorePath;
    }
@@ -165,14 +185,14 @@ public class SSLSupport {
    }
 
    public SslContext createNettyContext() throws Exception {
-      KeyStore keyStore = SSLSupport.loadKeystore(keystoreProvider, keystorePath, keystorePassword);
+      KeyStore keyStore = SSLSupport.loadKeystore(keystoreProvider, keystoreType, keystorePath, keystorePassword);
       KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
       keyManagerFactory.init(keyStore, keystorePassword.toCharArray());
       return SslContextBuilder.forServer(keyManagerFactory).sslProvider(SslProvider.valueOf(sslProvider)).trustManager(loadTrustManagerFactory()).build();
    }
 
    public SslContext createNettyClientContext() throws Exception {
-      KeyStore keyStore = SSLSupport.loadKeystore(keystoreProvider, keystorePath, keystorePassword);
+      KeyStore keyStore = SSLSupport.loadKeystore(keystoreProvider, keystoreType, keystorePath, keystorePassword);
       KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
       keyManagerFactory.init(keyStore, keystorePassword == null ? null : keystorePassword.toCharArray());
       return SslContextBuilder.forClient().sslProvider(SslProvider.valueOf(sslProvider)).keyManager(keyManagerFactory).trustManager(loadTrustManagerFactory()).build();
@@ -206,11 +226,11 @@ public class SSLSupport {
       } else if (trustAll) {
          //This is useful for testing but not should be used outside of that purpose
          return InsecureTrustManagerFactory.INSTANCE;
-      } else if (truststorePath == null && (truststoreProvider == null || !"PKCS11".equals(truststoreProvider.toUpperCase()))) {
+      } else if ((truststorePath == null || truststorePath.isEmpty() || truststorePath.toUpperCase().equals("NONE")) && (truststoreProvider == null || !truststoreProvider.toUpperCase().contains("PKCS11"))) {
          return null;
       } else {
          TrustManagerFactory trustMgrFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
-         KeyStore trustStore = SSLSupport.loadKeystore(truststoreProvider, truststorePath, truststorePassword);
+         KeyStore trustStore = SSLSupport.loadKeystore(truststoreProvider, truststoreType, truststorePath, truststorePassword);
          boolean ocsp = Boolean.valueOf(Security.getProperty("ocsp.enable"));
 
          boolean initialized = false;
@@ -253,12 +273,15 @@ public class SSLSupport {
    }
 
    private static KeyStore loadKeystore(final String keystoreProvider,
+                                        final String keystoreType,
                                         final String keystorePath,
                                         final String keystorePassword) throws Exception {
-      KeyStore ks = KeyStore.getInstance(keystoreProvider);
+       
+      KeyStore ks = KeyStore.getInstance(keystoreType, keystoreProvider);
+       
       InputStream in = null;
       try {
-         if (keystorePath != null) {
+         if (keystorePath != null && !keystorePath.isEmpty() && !keystorePath.toUpperCase().equals("NONE")) {
             URL keystoreURL = SSLSupport.validateStoreURL(keystorePath);
             in = keystoreURL.openStream();
          }
@@ -283,11 +306,12 @@ public class SSLSupport {
    }
 
    private KeyManagerFactory loadKeyManagerFactory() throws Exception {
-      if (keystorePath == null && (keystoreProvider == null || !"PKCS11".equals(keystoreProvider.toUpperCase()))) {
+       
+      if ((keystorePath == null || keystorePath.isEmpty() || keystorePath.toUpperCase().equals("NONE")) && (keystoreProvider == null || !keystoreProvider.toUpperCase().contains("PKCS11"))) {
          return null;
       } else {
          KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-         KeyStore ks = SSLSupport.loadKeystore(keystoreProvider, keystorePath, keystorePassword);
+         KeyStore ks = SSLSupport.loadKeystore(keystoreProvider, keystoreType, keystorePath, keystorePassword);
          kmf.init(ks, keystorePassword == null ? null : keystorePassword.toCharArray());
          return kmf;
       }
@@ -327,4 +351,4 @@ public class SSLSupport {
          }
       });
    }
-}
+}
\ No newline at end of file
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactory.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactory.java
index 436092d..54f7d92 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactory.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactory.java
@@ -33,9 +33,11 @@ public interface SSLContextFactory extends Comparable<SSLContextFactory> {
     * Obtain a SSLContext from the configuration.
     * @param configuration
     * @param keystoreProvider
+    * @param keystoreType
     * @param keystorePath
     * @param keystorePassword
     * @param truststoreProvider
+    * @param truststoreType
     * @param truststorePath
     * @param truststorePassword
     * @param crlPath
@@ -45,8 +47,8 @@ public interface SSLContextFactory extends Comparable<SSLContextFactory> {
     * @throws Exception
     */
    SSLContext getSSLContext(Map<String, Object> configuration,
-           String keystoreProvider, String keystorePath, String keystorePassword,
-           String truststoreProvider, String truststorePath, String truststorePassword,
+           String keystoreProvider, String keystoreType, String keystorePath, String keystorePassword,
+           String truststoreProvider, String truststoreType, String truststorePath, String truststorePassword,
            String crlPath, String trustManagerFactoryPlugin, boolean trustAll) throws Exception;
 
    default void clearSSLContexts() {
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactoryProvider.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactoryProvider.java
index 2b6cf2a..9ccceab 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactoryProvider.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ssl/SSLContextFactoryProvider.java
@@ -36,8 +36,8 @@ public class SSLContextFactoryProvider {
          factory = new SSLContextFactory() {
             @Override
             public SSLContext getSSLContext(Map<String, Object> configuration,
-                  String keystoreProvider, String keystorePath, String keystorePassword,
-                  String truststoreProvider, String truststorePath, String truststorePassword,
+                  String keystoreProvider, String keystoreType, String keystorePath, String keystorePassword,
+                  String truststoreProvider, String truststoreType, String truststorePath, String truststorePassword,
                   String crlPath, String trustManagerFactoryPlugin, boolean trustAll) throws Exception {
                return SSLContext.getDefault();
             }
diff --git a/artemis-dto/src/main/java/org/apache/activemq/artemis/dto/JMXConnectorDTO.java b/artemis-dto/src/main/java/org/apache/activemq/artemis/dto/JMXConnectorDTO.java
index 4805551..b6525b4 100644
--- a/artemis-dto/src/main/java/org/apache/activemq/artemis/dto/JMXConnectorDTO.java
+++ b/artemis-dto/src/main/java/org/apache/activemq/artemis/dto/JMXConnectorDTO.java
@@ -51,6 +51,9 @@ public class JMXConnectorDTO {
 
    @XmlAttribute (name = "key-store-provider")
    String keyStoreProvider;
+   
+   @XmlAttribute (name = "key-store-type")
+   String keyStoreType;   
 
    @XmlAttribute (name = "key-store-path")
    String keyStorePath;
@@ -59,7 +62,10 @@ public class JMXConnectorDTO {
    String keyStorePassword;
 
    @XmlAttribute (name = "trust-store-provider")
-   String trustStoreProvider;
+   String trustStoreProvider;   
+   
+   @XmlAttribute (name = "trust-store-type")
+   String trustStoreType;
 
    @XmlAttribute (name = "trust-store-path")
    String trustStorePath;
@@ -101,6 +107,10 @@ public class JMXConnectorDTO {
    public String getKeyStoreProvider() {
       return keyStoreProvider;
    }
+   
+   public String getKeyStoreType() {
+      return keyStoreType;
+   }   
 
    public String getKeyStorePath() {
       return keyStorePath;
@@ -113,6 +123,10 @@ public class JMXConnectorDTO {
    public String getTrustStoreProvider() {
       return trustStoreProvider;
    }
+   
+   public String getTrustStoreType() {
+      return trustStoreType;
+   }   
 
    public String getTrustStorePath() {
       return trustStorePath;
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/JMXConnectorConfiguration.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/JMXConnectorConfiguration.java
index b47acf5..64654d9 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/JMXConnectorConfiguration.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/JMXConnectorConfiguration.java
@@ -17,6 +17,7 @@
 package org.apache.activemq.artemis.core.config;
 
 import java.security.KeyStore;
+import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 
 public class JMXConnectorConfiguration {
    private int rmiRegistryPort;
@@ -29,10 +30,12 @@ public class JMXConnectorConfiguration {
    private String objectName = "connector:name=rmi";
    private String authenticatorType = "password";
    private boolean secured =  false;
-   private String keyStoreProvider = KeyStore.getDefaultType();
+   private String keyStoreProvider = TransportConstants.DEFAULT_KEYSTORE_PROVIDER;
+   private String keyStoreType = KeyStore.getDefaultType();
    private String keyStorePath;
    private String keyStorePassword;
-   private String trustStoreProvider = KeyStore.getDefaultType();
+   private String trustStoreProvider = TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER;
+   private String trustStoreType = KeyStore.getDefaultType();
    private String trustStorePath;
    private String trustStorePassword;
 
@@ -88,13 +91,21 @@ public class JMXConnectorConfiguration {
    public boolean isSecured() {
       return secured;
    }
-
+   
    public String getKeyStoreProvider() {
       return keyStoreProvider;
    }
 
    public void setKeyStoreProvider(String keyStoreProvider) {
       this.keyStoreProvider = keyStoreProvider;
+   }   
+
+   public String getKeyStoreType() {
+      return keyStoreType;
+   }
+
+   public void setKeyStoreType(String keyStoreType) {
+      this.keyStoreType = keyStoreType;
    }
 
    public String getKeyStorePath() {
@@ -119,6 +130,14 @@ public class JMXConnectorConfiguration {
 
    public void setTrustStoreProvider(String trustStoreProvider) {
       this.trustStoreProvider = trustStoreProvider;
+   }   
+   
+   public String getTrustStoreType() {
+      return trustStoreType;
+   }
+
+   public void setTrustStoreType(String trustStoreType) {
+      this.trustStoreType = trustStoreType;
    }
 
    public String getTrustStorePath() {
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
index ff10893..e00d824 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
@@ -153,6 +153,8 @@ public class NettyAcceptor extends AbstractAcceptor {
    private final int port;
 
    private final String keyStoreProvider;
+   
+   private final String keyStoreType;
 
    // non-final for testing purposes
    private String keyStorePath;
@@ -160,6 +162,8 @@ public class NettyAcceptor extends AbstractAcceptor {
    private final String keyStorePassword;
 
    private final String trustStoreProvider;
+   
+   private final String trustStoreType;
 
    private final String trustStorePath;
 
@@ -282,12 +286,16 @@ public class NettyAcceptor extends AbstractAcceptor {
       if (sslEnabled) {
          keyStoreProvider = ConfigurationHelper.getStringProperty(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_PROVIDER, configuration);
 
+         keyStoreType = ConfigurationHelper.getStringProperty(TransportConstants.KEYSTORE_TYPE_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_TYPE, configuration);
+         
          keyStorePath = ConfigurationHelper.getStringProperty(TransportConstants.KEYSTORE_PATH_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_PATH, configuration);
 
          keyStorePassword = ConfigurationHelper.getPasswordProperty(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, TransportConstants.DEFAULT_KEYSTORE_PASSWORD, configuration, ActiveMQDefaultConfiguration.getPropMaskPassword(), ActiveMQDefaultConfiguration.getPropPasswordCodec());
 
          trustStoreProvider = ConfigurationHelper.getStringProperty(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER, configuration);
 
+         trustStoreType = ConfigurationHelper.getStringProperty(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_TYPE, configuration);
+         
          trustStorePath = ConfigurationHelper.getStringProperty(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_PATH, configuration);
 
          trustStorePassword = ConfigurationHelper.getPasswordProperty(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, TransportConstants.DEFAULT_TRUSTSTORE_PASSWORD, configuration, ActiveMQDefaultConfiguration.getPropMaskPassword(), ActiveMQDefaultConfiguration.getPropPasswordCodec());
@@ -311,9 +319,11 @@ public class NettyAcceptor extends AbstractAcceptor {
          trustManagerFactoryPlugin = ConfigurationHelper.getStringProperty(TransportConstants.TRUST_MANAGER_FACTORY_PLUGIN_PROP_NAME, TransportConstants.DEFAULT_TRUST_MANAGER_FACTORY_PLUGIN, configuration);
       } else {
          keyStoreProvider = TransportConstants.DEFAULT_KEYSTORE_PROVIDER;
+         keyStoreType = TransportConstants.DEFAULT_KEYSTORE_TYPE;
          keyStorePath = TransportConstants.DEFAULT_KEYSTORE_PATH;
          keyStorePassword = TransportConstants.DEFAULT_KEYSTORE_PASSWORD;
          trustStoreProvider = TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER;
+         trustStoreType = TransportConstants.DEFAULT_TRUSTSTORE_TYPE;
          trustStorePath = TransportConstants.DEFAULT_TRUSTSTORE_PATH;
          trustStorePassword = TransportConstants.DEFAULT_TRUSTSTORE_PASSWORD;
          crlPath = TransportConstants.DEFAULT_CRL_PATH;
@@ -605,8 +615,8 @@ public class NettyAcceptor extends AbstractAcceptor {
       try {
          checkSSLConfiguration();
          context =  SSLContextFactoryProvider.getSSLContextFactory().getSSLContext(configuration,
-                 keyStoreProvider, keyStorePath, keyStorePassword,
-                 trustStoreProvider, trustStorePath, trustStorePassword,
+                 keyStoreProvider, keyStoreType, keyStorePath, keyStorePassword,
+                 trustStoreProvider, trustStoreType, trustStorePath, trustStorePassword,
                  crlPath, trustManagerFactoryPlugin, TransportConstants.DEFAULT_TRUST_ALL);
       } catch (Exception e) {
          IllegalStateException ise = new IllegalStateException("Unable to create NettyAcceptor for " + host + ":" + port, e);
@@ -636,7 +646,7 @@ public class NettyAcceptor extends AbstractAcceptor {
       if (configuration.containsKey(TransportConstants.SSL_CONTEXT_PROP_NAME)) {
          return;
       }
-      if (kerb5Config == null && keyStorePath == null && TransportConstants.DEFAULT_TRUSTSTORE_PROVIDER.equals(keyStoreProvider)) {
+      if (kerb5Config == null && keyStorePath == null && TransportConstants.DEFAULT_TRUSTSTORE_TYPE.equals(keyStoreType)) {
          throw new IllegalArgumentException("If \"" + TransportConstants.SSL_ENABLED_PROP_NAME + "\" is true then \"" + TransportConstants.KEYSTORE_PATH_PROP_NAME + "\" must be non-null " + "unless an alternative \"" + TransportConstants.KEYSTORE_PROVIDER_PROP_NAME + "\" has been specified.");
       }
    }
@@ -647,9 +657,11 @@ public class NettyAcceptor extends AbstractAcceptor {
          checkSSLConfiguration();
          context = new SSLSupport()
             .setKeystoreProvider(keyStoreProvider)
+            .setKeystoreType(keyStoreType)
             .setKeystorePath(keyStorePath)
             .setKeystorePassword(keyStorePassword)
             .setTruststoreProvider(trustStoreProvider)
+            .setTruststoreType(trustStoreType)
             .setTruststorePath(trustStorePath)
             .setTruststorePassword(trustStorePassword)
             .setSslProvider(sslProvider)
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ConnectorServerFactory.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ConnectorServerFactory.java
index 4ae7e3e..d0a118b 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ConnectorServerFactory.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ConnectorServerFactory.java
@@ -42,6 +42,10 @@ public class ConnectorServerFactory {
    public void setkeyStoreProvider(String keyStoreProvider) {
       this.keyStoreProvider = keyStoreProvider;
    }
+   
+   public void setkeyStoreType(String keyStoreType) {
+      this.keyStoreType = keyStoreType;
+   }
 
    public void setKeyStorePassword(String keyStorePassword) {
       this.keyStorePassword = keyStorePassword;
@@ -54,6 +58,10 @@ public class ConnectorServerFactory {
    public void setTrustStoreProvider(String trustStoreProvider) {
       this.trustStoreProvider = trustStoreProvider;
    }
+   
+   public void setTrustStoreType(String trustStoreType) {
+      this.trustStoreType = trustStoreType;
+   }
 
    public void setTrustStorePassword(String trustStorePassword) {
       this.trustStorePassword = trustStorePassword;
@@ -73,12 +81,16 @@ public class ConnectorServerFactory {
    private boolean secured;
 
    private String keyStoreProvider;
+   
+   private String keyStoreType;
 
    private String keyStorePath;
 
    private String keyStorePassword;
 
    private String trustStoreProvider;
+   
+   private String trustStoreType;
 
    private String trustStorePath;
 
@@ -88,6 +100,10 @@ public class ConnectorServerFactory {
    public String getKeyStoreProvider() {
       return keyStoreProvider;
    }
+   
+   public String getKeyStoreType() {
+      return keyStoreType;
+   }
 
    public String getKeyStorePath() {
       return keyStorePath;
@@ -104,6 +120,10 @@ public class ConnectorServerFactory {
    public String getTrustStoreProvider() {
       return trustStoreProvider;
    }
+   
+   public String getTrustStoreType() {
+      return trustStoreType;
+   }
 
    public String getTrustStorePath() {
       return trustStorePath;
@@ -234,9 +254,11 @@ public class ConnectorServerFactory {
    private void setupSsl() throws Exception {
       SSLContext context = new SSLSupport()
          .setKeystoreProvider(keyStoreProvider)
+         .setKeystoreType(keyStoreType)     
          .setKeystorePath(keyStorePath)
          .setKeystorePassword(keyStorePassword)
          .setTruststoreProvider(trustStoreProvider)
+         .setTruststoreType(trustStoreType)     
          .setTruststorePath(trustStorePath)
          .setTruststorePassword(trustStorePassword)
          .createContext();
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementConnector.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementConnector.java
index a73c3f1..c212775 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementConnector.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementConnector.java
@@ -82,9 +82,11 @@ public class ManagementConnector implements ActiveMQComponent {
          connectorServerFactory.setSecured(configuration.isSecured());
          connectorServerFactory.setKeyStorePath(configuration.getKeyStorePath());
          connectorServerFactory.setkeyStoreProvider(configuration.getKeyStoreProvider());
+         connectorServerFactory.setkeyStoreType(configuration.getKeyStoreType());
          connectorServerFactory.setKeyStorePassword(configuration.getKeyStorePassword());
          connectorServerFactory.setTrustStorePath(configuration.getTrustStorePath());
          connectorServerFactory.setTrustStoreProvider(configuration.getTrustStoreProvider());
+         connectorServerFactory.setTrustStoreType(configuration.getTrustStoreType());
          connectorServerFactory.setTrustStorePassword(configuration.getTrustStorePassword());
          connectorServerFactory.init();
       } catch (Exception e) {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
index 26dbef2..5a9fb80 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java
@@ -371,9 +371,11 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
          TransportConstants.LOCAL_ADDRESS_PROP_NAME + "=myLocalAddressPropValue&" +
          TransportConstants.LOCAL_PORT_PROP_NAME + "=myLocalPortPropValue&" +
          TransportConstants.KEYSTORE_PROVIDER_PROP_NAME + "=myKeystoreProviderPropValue&" +
+         TransportConstants.KEYSTORE_TYPE_PROP_NAME + "=myKeystoreTypePropValue&" +     
          TransportConstants.KEYSTORE_PATH_PROP_NAME + "=myKeystorePathPropValue&" +
          TransportConstants.KEYSTORE_PASSWORD_PROP_NAME + "=myKeystorePasswordPropValue&" +
          TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME + "=myTruststoreProviderPropValue&" +
+         TransportConstants.TRUSTSTORE_TYPE_PROP_NAME + "=myTruststoreTypePropValue&" +
          TransportConstants.TRUSTSTORE_PATH_PROP_NAME + "=myTruststorePathPropValue&" +
          TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME + "=myTruststorePasswordPropValue&" +
          TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME + "=myEnabledCipherSuitesPropValue&" +
@@ -406,9 +408,11 @@ public class SimpleJNDIClientTest extends ActiveMQTestBase {
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.LOCAL_ADDRESS_PROP_NAME), "myLocalAddressPropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.LOCAL_PORT_PROP_NAME), "myLocalPortPropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME), "myKeystoreProviderPropValue");
+      Assert.assertEquals(parametersFromJNDI.get(TransportConstants.KEYSTORE_TYPE_PROP_NAME), "myKeystoreTypePropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.KEYSTORE_PATH_PROP_NAME), "myKeystorePathPropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME), "myKeystorePasswordPropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME), "myTruststoreProviderPropValue");
+      Assert.assertEquals(parametersFromJNDI.get(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME), "myTruststoreTypePropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.TRUSTSTORE_PATH_PROP_NAME), "myTruststorePathPropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME), "myTruststorePasswordPropValue");
       Assert.assertEquals(parametersFromJNDI.get(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME), "myEnabledCipherSuitesPropValue");
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
index 785e55b..cb0d20b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
@@ -62,7 +62,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       return Arrays.asList(new Object[][]{{"JCEKS"}, {"JKS"}, {"PKCS12"}});
    }
 
-   public CoreClientOverOneWaySSLTest(String storeType) {
+   public CoreClientOverOneWaySSLTest(String storeProvider, String storeType) {
+      this.storeProvider = storeProvider; 
       this.storeType = storeType;
       suffix = storeType.toLowerCase();
       // keytool expects PKCS12 stores to use the extension "p12"
@@ -117,6 +118,7 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
     * keytool -export -keystore verified-server-side-keystore.p12 -file activemq-p12.cer -storetype PKCS12 -storepass secureexample
     * keytool -import -keystore verified-client-side-truststore.p12 -storetype PKCS12 -file activemq-p12.cer -storepass secureexample -keypass secureexample -noprompt
     */
+   private String storeProvider;
    private String storeType;
    private String SERVER_SIDE_KEYSTORE;
    private String CLIENT_SIDE_TRUSTSTORE;
@@ -132,7 +134,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -159,7 +162,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.SNIHOST_PROP_NAME, "myhost.com");
@@ -186,7 +190,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       createCustomSslServer("myhost\\.com");
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.SNIHOST_PROP_NAME, "badhost.com");
@@ -206,7 +211,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
 
       ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?" +
                                                                                      TransportConstants.SSL_ENABLED_PROP_NAME + "=true;" +
-                                                                                     TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME + "=" + storeType + ";" +
+                                                                                     TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME + "=" + storeProvider + ";" +
+                                                                                     TransportConstants.TRUSTSTORE_TYPE_PROP_NAME + "=" + storeType + ";" +
                                                                                      TransportConstants.TRUSTSTORE_PATH_PROP_NAME + "=" + CLIENT_SIDE_TRUSTSTORE + ";" +
                                                                                      TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME + "=" + PASSWORD + ";" +
                                                                                      TransportConstants.SNIHOST_PROP_NAME + "=badhost.com"));
@@ -225,7 +231,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.SNIHOST_PROP_NAME, "myhost.com");
@@ -253,7 +260,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -280,7 +288,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -309,7 +318,7 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       createCustomSslServer();
       String text = RandomUtil.randomString();
 
-      ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + PASSWORD));
+      ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeProvider + "trustStoreType=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + PASSWORD));
       ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator));
       ClientSession session = addClientSession(sf.createSession(false, true, true));
       session.createQueue(new QueueConfiguration(CoreClientOverOneWaySSLTest.QUEUE).setDurable(false));
@@ -337,7 +346,7 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
 
       String masked = codec.encode(PASSWORD);
 
-      ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + masked + ";activemq.usemaskedpassword=true"));
+      ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeProvider + ";trustStoreType=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + masked + ";activemq.usemaskedpassword=true"));
       ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator));
       ClientSession session = addClientSession(sf.createSession(false, true, true));
       session.createQueue(new QueueConfiguration(CoreClientOverOneWaySSLTest.QUEUE).setDurable(false));
@@ -365,7 +374,7 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
 
       String masked = codec.encode(PASSWORD);
 
-      ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=ENC(" + masked + ")"));
+      ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator("tcp://127.0.0.1:61616?sslEnabled=true;trustStoreProvider=" + storeProvider + ";trustStoreType=" + storeType + ";trustStorePath=" + CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=ENC(" + masked + ")"));
       ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator));
       ClientSession session = addClientSession(sf.createSession(false, true, true));
       session.createQueue(new QueueConfiguration(CoreClientOverOneWaySSLTest.QUEUE).setDurable(false));
@@ -391,7 +400,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       tc.getParams().put(TransportConstants.USE_DEFAULT_SSL_CONTEXT_PROP_NAME, true);
 
       SSLContext.setDefault(new SSLSupport()
-                               .setTruststoreProvider(storeType)
+                               .setTruststoreProvider(storeProvider)
+                               .setTruststoreType(storeType)
                                .setTruststorePath(CLIENT_SIDE_TRUSTSTORE)
                                .setTruststorePassword(PASSWORD)
                                .createContext());
@@ -419,7 +429,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, "verified-" + CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.VERIFY_HOST_PROP_NAME, true);
@@ -447,7 +458,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.VERIFY_HOST_PROP_NAME, true);
@@ -470,7 +482,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
 
       // create a valid SSL connection and keep it for use later
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -482,7 +495,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
 
       // create an invalid SSL connection
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, "other-client-side-truststore." + suffix);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -526,7 +540,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithBadClientCipherSuite() throws Exception {
       createCustomSslServer();
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME, "myBadCipherSuite");
@@ -544,7 +559,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithBadServerCipherSuite() throws Exception {
       createCustomSslServer("myBadCipherSuite", null);
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -561,7 +577,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithMismatchedCipherSuites() throws Exception {
       createCustomSslServer(getEnabledCipherSuites()[0], "TLSv1.2");
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME, getEnabledCipherSuites()[1]);
@@ -580,7 +597,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithBadClientProtocol() throws Exception {
       createCustomSslServer();
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_PROTOCOLS_PROP_NAME, "myBadProtocol");
@@ -598,7 +616,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithBadServerProtocol() throws Exception {
       createCustomSslServer(null, "myBadProtocol");
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -615,7 +634,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithMismatchedProtocols() throws Exception {
       createCustomSslServer(null, "TLSv1");
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_PROTOCOLS_PROP_NAME, "TLSv1.2");
@@ -634,7 +654,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testPOODLE() throws Exception {
       createCustomSslServer(null, "SSLv3");
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_PROTOCOLS_PROP_NAME, "SSLv3");
@@ -654,7 +675,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_CIPHER_SUITES_PROP_NAME, getSuitableCipherSuite());
@@ -689,7 +711,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_PROTOCOLS_PROP_NAME, "TLSv1.2");
@@ -723,7 +746,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
       tc.getParams().put(TransportConstants.ENABLED_PROTOCOLS_PROP_NAME, "TLSv1");
@@ -758,7 +782,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, PASSWORD);
 
@@ -817,10 +842,12 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
 
    public String[] getEnabledCipherSuites() throws Exception {
       SSLContext context = new SSLSupport()
-         .setKeystoreProvider(storeType)
+         .setKeystoreProvider(storeProvider)
+         .setKeystoreType(storeType)
          .setKeystorePath(SERVER_SIDE_KEYSTORE)
          .setKeystorePassword(PASSWORD)
-         .setTruststoreProvider(storeType)
+         .setTruststoreProvider(storeProvider)
+         .setTruststoreType(storeType)
          .setTruststorePath(CLIENT_SIDE_TRUSTSTORE)
          .setTruststorePassword(PASSWORD)
          .createContext();
@@ -848,7 +875,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
    public void testOneWaySSLWithIncorrectTrustStorePassword() throws Exception {
       createCustomSslServer();
       tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeType);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_PROVIDER_PROP_NAME, storeProvider);
+      tc.getParams().put(TransportConstants.TRUSTSTORE_TYPE_PROP_NAME, storeType);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PATH_PROP_NAME, CLIENT_SIDE_TRUSTSTORE);
       tc.getParams().put(TransportConstants.TRUSTSTORE_PASSWORD_PROP_NAME, "invalid password");
 
@@ -938,7 +966,8 @@ public class CoreClientOverOneWaySSLTest extends ActiveMQTestBase {
                                       String trustManagerFactoryPlugin) throws Exception {
       Map<String, Object> params = new HashMap<>();
       params.put(TransportConstants.SSL_ENABLED_PROP_NAME, true);
-      params.put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, storeType);
+      params.put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, storeProvider);
+      params.put(TransportConstants.KEYSTORE_TYPE_PROP_NAME, storeType);
 
       if (sniHost != null) {
          params.put(TransportConstants.SNIHOST_PROP_NAME, sniHost);
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/ssl/SSLSupportTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/ssl/SSLSupportTest.java
index 256be64..6027538 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/ssl/SSLSupportTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/ssl/SSLSupportTest.java
@@ -20,6 +20,7 @@ import java.io.File;
 import java.net.URL;
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 
 import org.apache.activemq.artemis.core.remoting.impl.ssl.SSLSupport;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
@@ -37,12 +38,15 @@ public class SSLSupportTest extends ActiveMQTestBase {
       return Arrays.asList(new Object[][]{{"JCEKS"}, {"JKS"}});
    }
 
-   public SSLSupportTest(String storeType) {
+   public SSLSupportTest(String storeProvider, String storeType) {
+      this.storeProvider = TransportConstants.DEFAULT_KEYSTORE_PROVIDER; 
       this.storeType = storeType;
       keyStorePath = "server-side-keystore." + storeType.toLowerCase();
       trustStorePath = "server-side-truststore." + storeType.toLowerCase();
    }
 
+   private String storeProvider;
+   
    private String storeType;
 
    private String keyStorePath;
@@ -74,10 +78,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    @Test
    public void testContextWithRightParameters() throws Exception {
       new SSLSupport()
-         .setKeystoreProvider(storeType)
+         .setKeystoreProvider(storeProvider)
+         .setKeystoreType(storeType)
          .setKeystorePath(keyStorePath)
          .setKeystorePassword(keyStorePassword)
-         .setTruststoreProvider(storeType)
+         .setTruststoreProvider(storeProvider)
+         .setTruststoreType(storeType)
          .setTruststorePath(trustStorePath)
          .setTruststorePassword(trustStorePassword)
          .createContext();
@@ -93,10 +99,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithKeyStorePathAsURL() throws Exception {
       URL url = Thread.currentThread().getContextClassLoader().getResource(keyStorePath);
       new SSLSupport()
-         .setKeystoreProvider(storeType)
+         .setKeystoreProvider(storeProvider)
+         .setKeystoreType(storeType)
          .setKeystorePath(url.toString())
          .setKeystorePassword(keyStorePassword)
-         .setTruststoreProvider(storeType)
+         .setTruststoreProvider(storeProvider)
+         .setTruststoreType(storeType)
          .setTruststorePath(trustStorePath)
          .setTruststorePassword(trustStorePassword)
          .createContext();
@@ -107,10 +115,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
       URL url = Thread.currentThread().getContextClassLoader().getResource(keyStorePath);
       File file = new File(url.toURI());
       new SSLSupport()
-         .setKeystoreProvider(storeType)
+         .setKeystoreProvider(storeProvider)
+         .setKeystoreType(storeType)
          .setKeystorePath(file.getAbsolutePath())
          .setKeystorePassword(keyStorePassword)
-         .setTruststoreProvider(storeType)
+         .setTruststoreProvider(storeProvider)
+         .setTruststoreType(storeType)
          .setTruststorePath(trustStorePath)
          .setTruststorePassword(trustStorePassword)
          .createContext();
@@ -120,10 +130,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithBadKeyStorePath() throws Exception {
       try {
          new SSLSupport()
-            .setKeystoreProvider(storeType)
+            .setKeystoreProvider(storeProvider)
+            .setKeystoreType(storeType)     
             .setKeystorePath("not a keystore")
             .setKeystorePassword(keyStorePassword)
-            .setTruststoreProvider(storeType)
+            .setTruststoreProvider(storeProvider)
+            .setTruststoreType(storeType)
             .setTruststorePath(trustStorePath)
             .setTruststorePassword(trustStorePassword)
             .createContext();
@@ -136,10 +148,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithNullKeyStorePath() throws Exception {
       try {
          new SSLSupport()
-            .setKeystoreProvider(storeType)
+            .setKeystoreProvider(storeProvider)
+            .setKeystoreType(storeType)
             .setKeystorePath(null)
             .setKeystorePassword(keyStorePassword)
-            .setTruststoreProvider(storeType)
+            .setTruststoreProvider(storeProvider)
+            .setTruststoreType(storeType)
             .setTruststorePath(trustStorePath)
             .setTruststorePassword(trustStorePassword)
             .createContext();
@@ -158,10 +172,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
       }
 
       new SSLSupport()
-         .setKeystoreProvider(storeType)
+         .setKeystoreProvider(storeProvider)
+         .setKeystoreType(storeType)
          .setKeystorePath("src/test/resources/" + keyStorePath)
          .setKeystorePassword(keyStorePassword)
-         .setTruststoreProvider(storeType)
+         .setTruststoreProvider(storeProvider)
+         .setTruststoreType(storeType)
          .setTruststorePath(trustStorePath)
          .setTruststorePassword(trustStorePassword)
          .createContext();
@@ -171,10 +187,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithBadKeyStorePassword() throws Exception {
       try {
          new SSLSupport()
-            .setKeystoreProvider(storeType)
+            .setKeystoreProvider(storeProvider)
+            .setKeystoreType(storeType)
             .setKeystorePath(keyStorePath)
             .setKeystorePassword("bad password")
-            .setTruststoreProvider(storeType)
+            .setTruststoreProvider(storeProvider)
+            .setTruststoreType(storeType)
             .setTruststorePath(trustStorePath)
             .setTruststorePassword(trustStorePassword)
             .createContext();
@@ -187,10 +205,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithNullKeyStorePassword() throws Exception {
       try {
          new SSLSupport()
-            .setKeystoreProvider(storeType)
+            .setKeystoreProvider(storeProvider)
+            .setKeystoreType(storeType)
             .setKeystorePath(keyStorePath)
             .setKeystorePassword(null)
-            .setTruststoreProvider(storeType)
+            .setTruststoreProvider(storeProvider)
+            .setTruststoreType(storeType)
             .setTruststorePath(trustStorePath)
             .setTruststorePassword(trustStorePassword)
             .createContext();
@@ -204,10 +224,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithBadTrustStorePath() throws Exception {
       try {
          new SSLSupport()
-            .setKeystoreProvider(storeType)
+            .setKeystoreProvider(storeProvider)
+            .setKeystoreType(storeType)
             .setKeystorePath(keyStorePath)
             .setKeystorePassword(keyStorePassword)
-            .setTruststoreProvider(storeType)
+            .setTruststoreProvider(storeProvider)
+            .setTruststoreType(storeType)
             .setTruststorePath("not a trust store")
             .setTruststorePassword(trustStorePassword)
             .createContext();
@@ -220,10 +242,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
    public void testContextWithBadTrustStorePassword() throws Exception {
       try {
          new SSLSupport()
-            .setKeystoreProvider(storeType)
+            .setKeystoreProvider(storeProvider)
+            .setKeystoreType(storeType)
             .setKeystorePath(keyStorePath)
             .setKeystorePassword(keyStorePassword)
-            .setTruststoreProvider(storeType)
+            .setTruststoreProvider(storeProvider)
+            .setTruststoreType(storeType)
             .setTruststorePath(trustStorePath)
             .setTruststorePassword("bad passord")
             .createContext();
@@ -237,10 +261,12 @@ public class SSLSupportTest extends ActiveMQTestBase {
       //This is using a bad password but should not fail because the trust store should be ignored with
       //the trustAll flag set to true
       new SSLSupport()
-         .setKeystoreProvider(storeType)
+         .setKeystoreProvider(storeProvider)
+         .setKeystoreType(storeType)
          .setKeystorePath(keyStorePath)
          .setKeystorePassword(keyStorePassword)
-         .setTruststoreProvider(storeType)
+         .setTruststoreProvider(storeProvider)
+         .setTruststoreType(storeType)
          .setTruststorePath(trustStorePath)
          .setTruststorePassword("bad passord")
          .setTrustAll(true)
