This is an automated email from the ASF dual-hosted git repository.

av pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 10288411024 IGNITE-19335 CommandHandler SSL migration (from 
GridSslBasicContextFactory to SslContextFactory) (#10658)
10288411024 is described below

commit 10288411024ac4f4be0e191a9c45257341c0abff
Author: Anton Vinogradov <a...@apache.org>
AuthorDate: Fri Apr 21 12:17:57 2023 +0300

    IGNITE-19335 CommandHandler SSL migration (from GridSslBasicContextFactory 
to SslContextFactory) (#10658)
---
 .../ClientAbstractMultiThreadedSelfTest.java       |   8 +-
 .../internal/client/ClientSslParametersTest.java   |  16 +-
 .../client/ClientTcpMultiThreadedSelfTest.java     |   5 +-
 .../client/ClientTcpSslAuthenticationSelfTest.java |   8 +-
 .../client/ClientTcpSslMultiThreadedSelfTest.java  |   7 +-
 .../ClientAbstractMultiNodeSelfTest.java           |  10 +-
 .../client/integration/ClientAbstractSelfTest.java |   7 +-
 .../integration/ClientTcpDirectSelfTest.java       |   5 +-
 .../client/integration/ClientTcpSelfTest.java      |   5 +-
 .../ClientTcpSslDirectMultiNodeSelfTest.java       |   7 +-
 .../integration/ClientTcpSslDirectSelfTest.java    |   7 +-
 .../integration/ClientTcpSslMultiNodeSelfTest.java |   7 +-
 .../client/integration/ClientTcpSslSelfTest.java   |   7 +-
 .../internal/client/router/TcpRouterSelfTest.java  |   5 +-
 .../client/router/TcpSslRouterSelfTest.java        |   7 +-
 .../src/test/resources/spring-router-ssl.xml       |   2 +-
 .../src/test/resources/spring-server-ssl-node.xml  |   4 +-
 .../internal/commandline/CommandHandler.java       |  29 +-
 .../internal/client/GridClientConfiguration.java   |  16 +-
 .../internal/client/impl/GridClientImpl.java       |  16 +-
 .../client/router/GridTcpRouterConfiguration.java  |  10 +-
 .../client/router/impl/GridTcpRouterImpl.java      |  12 +-
 .../client/ssl/GridSslBasicContextFactory.java     | 521 ---------------------
 .../internal/client/ssl/GridSslContextFactory.java |   3 -
 .../apache/ignite/testframework/GridTestUtils.java |  21 +-
 25 files changed, 95 insertions(+), 650 deletions(-)

diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientAbstractMultiThreadedSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientAbstractMultiThreadedSelfTest.java
index 5543ea138fb..a2c9bf1271a 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientAbstractMultiThreadedSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientAbstractMultiThreadedSelfTest.java
@@ -28,6 +28,8 @@ import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.compute.ComputeJob;
 import org.apache.ignite.compute.ComputeJobAdapter;
@@ -38,12 +40,12 @@ import 
org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.client.balancer.GridClientRoundRobinBalancer;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
+
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
 import static org.apache.ignite.cache.CacheMode.REPLICATED;
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_ASYNC;
@@ -113,7 +115,7 @@ public abstract class ClientAbstractMultiThreadedSelfTest 
extends GridCommonAbst
     /**
      * @return SSL context factory to use if SSL is enabled.
      */
-    protected abstract GridSslContextFactory sslContextFactory();
+    protected abstract Factory<SSLContext> sslContextFactory();
 
     /**
      * @return Topology refresh frequency interval.
@@ -158,7 +160,7 @@ public abstract class ClientAbstractMultiThreadedSelfTest 
extends GridCommonAbst
         if (useSsl()) {
             clientCfg.setSslEnabled(true);
 
-            clientCfg.setSslContextFactory(sslContextFactory());
+            clientCfg.setSslFactory(sslContextFactory());
         }
 
         c.setConnectorConfiguration(clientCfg);
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientSslParametersTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientSslParametersTest.java
index 325caaaed10..27d01e4c8a2 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientSslParametersTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientSslParametersTest.java
@@ -23,7 +23,6 @@ import java.util.concurrent.Callable;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.ssl.SslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
@@ -67,7 +66,7 @@ public class ClientSslParametersTest extends 
GridCommonAbstractTest {
 
         cfg.setServers(Collections.singleton("127.0.0.1:11211"));
 
-        cfg.setSslContextFactory(createOldSslFactory());
+        cfg.setSslContextFactory(createSslFactory());
 
         return cfg;
     }
@@ -85,19 +84,6 @@ public class ClientSslParametersTest extends 
GridCommonAbstractTest {
         return factory;
     }
 
-    /**
-     * @return SSL Factory.
-     */
-    @NotNull private GridSslBasicContextFactory createOldSslFactory() {
-        GridSslBasicContextFactory factory = 
(GridSslBasicContextFactory)GridTestUtils.sslContextFactory();
-
-        factory.setCipherSuites(cipherSuites);
-
-        factory.setProtocols(protocols);
-
-        return factory;
-    }
-
     /** {@inheritDoc} */
     @Override protected void afterTest() throws Exception {
         stopAllGrids();
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpMultiThreadedSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpMultiThreadedSelfTest.java
index 1f2d41cd844..26eabca32d0 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpMultiThreadedSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpMultiThreadedSelfTest.java
@@ -17,7 +17,8 @@
 
 package org.apache.ignite.internal.client;
 
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 
 /**
  * Runs multi-threaded tests on tcp binary protocol (ssl is disabled).
@@ -39,7 +40,7 @@ public class ClientTcpMultiThreadedSelfTest extends 
ClientAbstractMultiThreadedS
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
+    @Override protected Factory<SSLContext> sslContextFactory() {
         return null;
     }
 }
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslAuthenticationSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslAuthenticationSelfTest.java
index b58e6326bdb..94dfeb13a9d 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslAuthenticationSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslAuthenticationSelfTest.java
@@ -26,10 +26,10 @@ import 
org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.client.balancer.GridClientRoundRobinBalancer;
 import org.apache.ignite.internal.client.impl.GridClientImpl;
-import org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory;
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.ssl.SslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
@@ -78,11 +78,11 @@ public class ClientTcpSslAuthenticationSelfTest extends 
GridCommonAbstractTest {
         clientCfg.setSslClientAuth(checkClient);
         clientCfg.setSslClientAuth(checkClient);
 
-        GridSslBasicContextFactory factory = 
(GridSslBasicContextFactory)GridTestUtils.sslContextFactory();
+        SslContextFactory factory = 
(SslContextFactory)GridTestUtils.sslFactory();
 
         factory.setTrustManagers(srvTrustMgr);
 
-        clientCfg.setSslContextFactory(factory);
+        clientCfg.setSslFactory(factory);
 
         c.setConnectorConfiguration(clientCfg);
 
@@ -101,7 +101,7 @@ public class ClientTcpSslAuthenticationSelfTest extends 
GridCommonAbstractTest {
         cfg.setServers(Arrays.asList(U.getLocalHost().getHostAddress() + ":" + 
REST_TCP_PORT));
         cfg.setBalancer(new GridClientRoundRobinBalancer());
 
-        GridSslBasicContextFactory factory = 
(GridSslBasicContextFactory)GridTestUtils.sslContextFactory();
+        SslContextFactory factory = 
(SslContextFactory)GridTestUtils.sslFactory();
 
         factory.setTrustManagers(clientTrustMgr);
 
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslMultiThreadedSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslMultiThreadedSelfTest.java
index 8dbd5f60356..1d9bd94afab 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslMultiThreadedSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/ClientTcpSslMultiThreadedSelfTest.java
@@ -17,7 +17,8 @@
 
 package org.apache.ignite.internal.client;
 
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.testframework.GridTestUtils;
 
 /**
@@ -40,7 +41,7 @@ public class ClientTcpSslMultiThreadedSelfTest extends 
ClientAbstractMultiThread
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
-        return GridTestUtils.sslContextFactory();
+    @Override protected Factory<SSLContext> sslContextFactory() {
+        return GridTestUtils.sslFactory();
     }
 }
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractMultiNodeSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractMultiNodeSelfTest.java
index 0d17ee4bc9c..67a591b4bb4 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractMultiNodeSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractMultiNodeSelfTest.java
@@ -26,6 +26,8 @@ import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.cluster.ClusterNode;
@@ -50,7 +52,6 @@ import org.apache.ignite.internal.client.GridClientProtocol;
 import org.apache.ignite.internal.client.GridClientTopologyListener;
 import org.apache.ignite.internal.client.balancer.GridClientLoadBalancer;
 import org.apache.ignite.internal.client.balancer.GridClientRoundRobinBalancer;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.managers.communication.GridIoMessage;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import 
org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockRequest;
@@ -71,6 +72,7 @@ import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.jetbrains.annotations.Nullable;
 import org.junit.Test;
+
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
 import static org.apache.ignite.cache.CacheMode.REPLICATED;
@@ -140,7 +142,7 @@ public abstract class ClientAbstractMultiNodeSelfTest 
extends GridCommonAbstract
     /**
      * @return SSL context factory to use if SSL or {@code null} to disable 
SSL usage.
      */
-    @Nullable protected GridSslContextFactory sslContextFactory() {
+    @Nullable protected Factory<SSLContext> sslContextFactory() {
         return null;
     }
 
@@ -157,11 +159,11 @@ public abstract class ClientAbstractMultiNodeSelfTest 
extends GridCommonAbstract
 
             clientCfg.setPort(REST_TCP_PORT_BASE);
 
-            GridSslContextFactory sslCtxFactory = sslContextFactory();
+            Factory<SSLContext> sslCtxFactory = sslContextFactory();
 
             if (sslCtxFactory != null) {
                 clientCfg.setSslEnabled(true);
-                clientCfg.setSslContextFactory(sslCtxFactory);
+                clientCfg.setSslFactory(sslCtxFactory);
             }
 
             c.setConnectorConfiguration(clientCfg);
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractSelfTest.java
index c06933c1928..8be7ef8b664 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientAbstractSelfTest.java
@@ -35,6 +35,7 @@ import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.cache.Cache;
 import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.ignite.IgniteException;
@@ -61,7 +62,6 @@ import org.apache.ignite.internal.client.GridClientNode;
 import org.apache.ignite.internal.client.GridClientPredicate;
 import org.apache.ignite.internal.client.GridClientProtocol;
 import org.apache.ignite.internal.client.GridServerUnreachableException;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiInClosure;
@@ -70,6 +70,7 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.junit.Assert;
 import org.junit.Test;
+
 import static org.apache.ignite.IgniteSystemProperties.IGNITE_JETTY_PORT;
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
 import static org.apache.ignite.cache.CacheMode.REPLICATED;
@@ -181,7 +182,7 @@ public abstract class ClientAbstractSelfTest extends 
GridCommonAbstractTest {
     /**
      * @return SSL context factory used in test.
      */
-    protected abstract GridSslContextFactory sslContextFactory();
+    protected abstract Factory<SSLContext> sslContextFactory();
 
     /**
      * Get task name.
@@ -223,7 +224,7 @@ public abstract class ClientAbstractSelfTest extends 
GridCommonAbstractTest {
         if (useSsl()) {
             clientCfg.setSslEnabled(true);
 
-            clientCfg.setSslContextFactory(sslContextFactory());
+            clientCfg.setSslFactory(sslContextFactory());
         }
 
         cfg.setConnectorConfiguration(clientCfg);
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpDirectSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpDirectSelfTest.java
index d115865e257..46561bd32e2 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpDirectSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpDirectSelfTest.java
@@ -18,10 +18,11 @@
 package org.apache.ignite.internal.client.integration;
 
 import java.util.Collections;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.GridClientConfiguration;
 import org.apache.ignite.internal.client.GridClientException;
 import org.apache.ignite.internal.client.GridClientProtocol;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 
 /**
  *
@@ -43,7 +44,7 @@ public class ClientTcpDirectSelfTest extends 
ClientAbstractSelfTest {
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
+    @Override protected Factory<SSLContext> sslContextFactory() {
         return null;
     }
 
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSelfTest.java
index c1c1e8839a1..97be4085f8f 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSelfTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.ignite.internal.client.integration;
 
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.GridClientProtocol;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 
 /**
  * Tests TCP protocol.
@@ -40,7 +41,7 @@ public class ClientTcpSelfTest extends ClientAbstractSelfTest 
{
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
+    @Override protected Factory<SSLContext> sslContextFactory() {
         return null;
     }
 }
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectMultiNodeSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectMultiNodeSelfTest.java
index b2ee1ecd4ac..ac7b4bf73cd 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectMultiNodeSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectMultiNodeSelfTest.java
@@ -20,10 +20,11 @@ package org.apache.ignite.internal.client.integration;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.GridClientConfiguration;
 import org.apache.ignite.internal.client.GridClientException;
 import org.apache.ignite.internal.client.GridClientProtocol;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
 
 /**
@@ -41,8 +42,8 @@ public class ClientTcpSslDirectMultiNodeSelfTest extends 
ClientAbstractMultiNode
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
-        return GridTestUtils.sslContextFactory();
+    @Override protected Factory<SSLContext> sslContextFactory() {
+        return GridTestUtils.sslFactory();
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectSelfTest.java
index 3e5e984ae57..48707963d8d 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslDirectSelfTest.java
@@ -18,10 +18,11 @@
 package org.apache.ignite.internal.client.integration;
 
 import java.util.Collections;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.GridClientConfiguration;
 import org.apache.ignite.internal.client.GridClientException;
 import org.apache.ignite.internal.client.GridClientProtocol;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
 
 /**
@@ -44,8 +45,8 @@ public class ClientTcpSslDirectSelfTest extends 
ClientAbstractSelfTest {
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
-        return GridTestUtils.sslContextFactory();
+    @Override protected Factory<SSLContext> sslContextFactory() {
+        return GridTestUtils.sslFactory();
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslMultiNodeSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslMultiNodeSelfTest.java
index f8b7effc4c2..939f413a985 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslMultiNodeSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslMultiNodeSelfTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.ignite.internal.client.integration;
 
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.GridClientProtocol;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
 
 /**
@@ -36,7 +37,7 @@ public class ClientTcpSslMultiNodeSelfTest extends 
ClientAbstractMultiNodeSelfTe
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
-        return GridTestUtils.sslContextFactory();
+    @Override protected Factory<SSLContext> sslContextFactory() {
+        return GridTestUtils.sslFactory();
     }
 }
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslSelfTest.java
index 9b809f2327b..7a094ff86d1 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/integration/ClientTcpSslSelfTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.ignite.internal.client.integration;
 
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.GridClientProtocol;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
 
 /**
@@ -41,7 +42,7 @@ public class ClientTcpSslSelfTest extends 
ClientAbstractSelfTest {
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
-        return GridTestUtils.sslContextFactory();
+    @Override protected Factory<SSLContext> sslContextFactory() {
+        return GridTestUtils.sslFactory();
     }
 }
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpRouterSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpRouterSelfTest.java
index 08daf8bd697..33e24a8d99d 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpRouterSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpRouterSelfTest.java
@@ -17,7 +17,8 @@
 
 package org.apache.ignite.internal.client.router;
 
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 
 /**
  * Tests the simplest use case for router: singe router proxies connections to 
a single node.
@@ -29,7 +30,7 @@ public class TcpRouterSelfTest extends 
TcpRouterAbstractSelfTest {
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
+    @Override protected Factory<SSLContext> sslContextFactory() {
         return null;
     }
 }
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpSslRouterSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpSslRouterSelfTest.java
index 3e710f08796..659a3abd8bc 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpSslRouterSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/client/router/TcpSslRouterSelfTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.ignite.internal.client.router;
 
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.junit.Ignore;
 
@@ -33,8 +34,8 @@ public class TcpSslRouterSelfTest extends 
TcpRouterAbstractSelfTest {
     }
 
     /** {@inheritDoc} */
-    @Override protected GridSslContextFactory sslContextFactory() {
-        return GridTestUtils.sslContextFactory();
+    @Override protected Factory<SSLContext> sslContextFactory() {
+        return GridTestUtils.sslFactory();
     }
 
     /**
diff --git a/modules/clients/src/test/resources/spring-router-ssl.xml 
b/modules/clients/src/test/resources/spring-router-ssl.xml
index e145cce9844..f083704a618 100644
--- a/modules/clients/src/test/resources/spring-router-ssl.xml
+++ b/modules/clients/src/test/resources/spring-router-ssl.xml
@@ -83,7 +83,7 @@
 
         <!-- Provide Ssl context. -->
         <property name="sslContextFactory">
-            <bean 
class="org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory">
+            <bean class="org.apache.ignite.ssl.SslContextFactory">
                 <property name="keyStoreFilePath" 
value="${CLIENTS_MODULE_PATH}/src/test/keystore/server.jks"/>
                 <property name="keyStorePassword" value="123456"/>
                 <property name="trustStoreFilePath" 
value="${CLIENTS_MODULE_PATH}/src/test/keystore/trust-one.jks"/>
diff --git a/modules/clients/src/test/resources/spring-server-ssl-node.xml 
b/modules/clients/src/test/resources/spring-server-ssl-node.xml
index 8589a3c6ffe..eb27cc68262 100644
--- a/modules/clients/src/test/resources/spring-server-ssl-node.xml
+++ b/modules/clients/src/test/resources/spring-server-ssl-node.xml
@@ -68,8 +68,8 @@
                 <!-- Sets flag indicating whether or not SSL client 
authentication is required. -->
                 <property name="sslClientAuth" value="true"/>
 
-                <property name="sslContextFactory">
-                    <bean 
class="org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory">
+                <property name="sslFactory">
+                    <bean class="org.apache.ignite.ssl.SslContextFactory">
                         <property name="keyStoreFilePath" 
value="${CLIENTS_MODULE_PATH}/src/test/keystore/server.jks"/>
                         <property name="keyStorePassword" value="123456"/>
                         <property name="trustStoreFilePath" 
value="${CLIENTS_MODULE_PATH}/src/test/keystore/trust-one.jks"/>
diff --git 
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
 
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
index 967f0114cc5..6edcda692aa 100644
--- 
a/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
+++ 
b/modules/control-utility/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
@@ -27,7 +27,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Scanner;
 import java.util.UUID;
-import java.util.stream.Collectors;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
@@ -39,7 +38,6 @@ import 
org.apache.ignite.internal.client.GridClientDisconnectedException;
 import org.apache.ignite.internal.client.GridClientHandshakeException;
 import org.apache.ignite.internal.client.GridServerUnreachableException;
 import 
org.apache.ignite.internal.client.impl.connection.GridClientConnectionResetException;
-import org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory;
 import org.apache.ignite.internal.logger.IgniteLoggerEx;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.X;
@@ -572,18 +570,21 @@ public class CommandHandler {
      * @param args Commond args.
      * @return Ssl support factory.
      */
-    @NotNull private GridSslBasicContextFactory 
createSslSupportFactory(ConnectionAndSslParameters args) {
-        GridSslBasicContextFactory factory = new GridSslBasicContextFactory();
+    @NotNull private SslContextFactory 
createSslSupportFactory(ConnectionAndSslParameters args) {
+        SslContextFactory factory = new SslContextFactory();
 
-        List<String> sslProtocols = split(args.sslProtocol(), ",");
+        String[] sslProtocols = split(args.sslProtocol(), ",");
 
-        String sslProtocol = F.isEmpty(sslProtocols) ? DFLT_SSL_PROTOCOL : 
sslProtocols.get(0);
+        if (F.isEmpty(sslProtocols))
+            factory.setProtocol(DFLT_SSL_PROTOCOL);
+        else {
+            factory.setProtocol(sslProtocols[0]);
 
-        factory.setProtocol(sslProtocol);
-        factory.setKeyAlgorithm(args.sslKeyAlgorithm());
+            if (sslProtocols.length > 1)
+                factory.setProtocols(sslProtocols);
+        }
 
-        if (sslProtocols.size() > 1)
-            factory.setProtocols(sslProtocols);
+        factory.setKeyAlgorithm(args.sslKeyAlgorithm());
 
         factory.setCipherSuites(split(args.getSslCipherSuites(), ","));
 
@@ -601,7 +602,7 @@ public class CommandHandler {
         factory.setKeyStoreType(args.sslKeyStoreType());
 
         if (F.isEmpty(args.sslTrustStorePath()))
-            
factory.setTrustManagers(GridSslBasicContextFactory.getDisabledTrustManager());
+            
factory.setTrustManagers(SslContextFactory.getDisabledTrustManager());
         else {
             factory.setTrustStoreFilePath(args.sslTrustStorePath());
 
@@ -713,14 +714,14 @@ public class CommandHandler {
      * @param delim Delimiter.
      * @return List with items.
      */
-    private static List<String> split(String s, String delim) {
+    private static String[] split(String s, String delim) {
         if (F.isEmpty(s))
-            return Collections.emptyList();
+            return null;
 
         return Arrays.stream(s.split(delim))
             .map(String::trim)
             .filter(item -> !item.isEmpty())
-            .collect(Collectors.toList());
+            .toArray(String[]::new);
     }
 
     /** @param rawArgs Arguments. */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientConfiguration.java
index c0135a5e57f..df243597f6c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/GridClientConfiguration.java
@@ -25,18 +25,19 @@ import java.util.Collections;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ExecutorService;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.internal.client.balancer.GridClientLoadBalancer;
 import org.apache.ignite.internal.client.balancer.GridClientRandomBalancer;
 import org.apache.ignite.internal.client.balancer.GridClientRoundRobinBalancer;
 import org.apache.ignite.internal.client.marshaller.GridClientMarshaller;
 import 
org.apache.ignite.internal.client.marshaller.optimized.GridClientOptimizedMarshaller;
-import org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.plugin.security.SecurityCredentials;
 import org.apache.ignite.plugin.security.SecurityCredentialsBasicProvider;
 import org.apache.ignite.plugin.security.SecurityCredentialsProvider;
+import org.apache.ignite.ssl.SslContextFactory;
 import org.jetbrains.annotations.Nullable;
 
 import static org.apache.ignite.ssl.SslContextFactory.DFLT_KEY_ALGORITHM;
@@ -84,7 +85,7 @@ public class GridClientConfiguration {
     private boolean tcpNoDelay = DFLT_TCP_NODELAY;
 
     /** SSL context factory  */
-    private GridSslContextFactory sslCtxFactory;
+    private Factory<SSLContext> sslCtxFactory;
 
     /** Flag indicating whether metrics cache is enabled. */
     private boolean enableMetricsCache = true;
@@ -338,9 +339,8 @@ public class GridClientConfiguration {
      * If it returns {@code null} then SSL is considered disabled.
      *
      * @return Factory instance.
-     * @see GridSslContextFactory
      */
-    public GridSslContextFactory getSslContextFactory() {
+    public Factory<SSLContext> getSslContextFactory() {
         return sslCtxFactory;
     }
 
@@ -350,7 +350,7 @@ public class GridClientConfiguration {
      * @param sslCtxFactory Context factory.
      * @return {@code this} for chaining.
      */
-    public GridClientConfiguration setSslContextFactory(GridSslContextFactory 
sslCtxFactory) {
+    public GridClientConfiguration setSslContextFactory(Factory<SSLContext> 
sslCtxFactory) {
         this.sslCtxFactory = sslCtxFactory;
 
         return this;
@@ -782,7 +782,7 @@ public class GridClientConfiguration {
         //
 
         if (!F.isEmpty(sslEnabled) && Boolean.parseBoolean(sslEnabled)) {
-            GridSslBasicContextFactory factory = new 
GridSslBasicContextFactory();
+            SslContextFactory factory = new SslContextFactory();
 
             factory.setProtocol(F.isEmpty(sslProto) ? DFLT_SSL_PROTOCOL : 
sslProto);
             factory.setKeyAlgorithm(F.isEmpty(sslKeyAlg) ? DFLT_KEY_ALGORITHM 
: sslKeyAlg);
@@ -798,7 +798,7 @@ public class GridClientConfiguration {
             factory.setKeyStoreType(F.isEmpty(keyStoreType) ? DFLT_STORE_TYPE 
: keyStoreType);
 
             if (F.isEmpty(trustStorePath))
-                
factory.setTrustManagers(GridSslBasicContextFactory.getDisabledTrustManager());
+                
factory.setTrustManagers(SslContextFactory.getDisabledTrustManager());
             else {
                 factory.setTrustStoreFilePath(trustStorePath);
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
index b41b531d822..86676b3abdc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
@@ -31,8 +31,8 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.cache.configuration.Factory;
 import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.internal.client.GridClient;
@@ -60,7 +60,6 @@ import 
org.apache.ignite.internal.client.impl.connection.GridClientConnection;
 import 
org.apache.ignite.internal.client.impl.connection.GridClientConnectionManager;
 import 
org.apache.ignite.internal.client.impl.connection.GridClientConnectionManagerOsImpl;
 import org.apache.ignite.internal.client.impl.connection.GridClientTopology;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.internal.util.worker.CycleThread;
@@ -164,17 +163,10 @@ public class GridClientImpl implements GridClient, 
GridClientBeforeNodeStart {
             if (!beforeNodeStart && cfg.getBalancer() instanceof 
GridClientTopologyListener)
                 
top.addTopologyListener((GridClientTopologyListener)cfg.getBalancer());
 
-            GridSslContextFactory factory = cfg.getSslContextFactory();
+            Factory<SSLContext> factory = cfg.getSslContextFactory();
 
-            if (factory != null) {
-                try {
-                    sslCtx = factory.createSslContext();
-                }
-                catch (SSLException e) {
-                    throw new GridClientException("Failed to create client 
(unable to create SSL context, " +
-                        "check ssl context factory configuration): " + 
e.getMessage(), e);
-                }
-            }
+            if (factory != null)
+                sslCtx = factory.create();
             else
                 sslCtx = null;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/router/GridTcpRouterConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/router/GridTcpRouterConfiguration.java
index 03b650a071c..88bd2d7634a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/router/GridTcpRouterConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/router/GridTcpRouterConfiguration.java
@@ -20,10 +20,11 @@ package org.apache.ignite.internal.client.router;
 import java.net.Socket;
 import java.util.Collection;
 import java.util.Collections;
+import javax.cache.configuration.Factory;
+import javax.net.ssl.SSLContext;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.plugin.security.SecurityCredentialsProvider;
@@ -75,7 +76,7 @@ public class GridTcpRouterConfiguration {
     private boolean sslClientAuth;
 
     /** Ssl context factory. */
-    private GridSslContextFactory sslCtxFactory;
+    private Factory<SSLContext> sslCtxFactory;
 
     /** Collection of servers */
     private Collection<String> srvrs = DFLT_SERVERS;
@@ -162,9 +163,8 @@ public class GridTcpRouterConfiguration {
      * of both rest binary server and out coming connections.
      *
      * @return SslContextFactory instance.
-     * @see GridSslContextFactory
      */
-    @Nullable public GridSslContextFactory getSslContextFactory() {
+    @Nullable public Factory<SSLContext> getSslContextFactory() {
         return sslCtxFactory;
     }
 
@@ -288,7 +288,7 @@ public class GridTcpRouterConfiguration {
      * @param sslCtxFactory Ssl context factory.
      * @return {@code this} for chaining.
      */
-    public GridTcpRouterConfiguration 
setSslContextFactory(GridSslContextFactory sslCtxFactory) {
+    public GridTcpRouterConfiguration setSslContextFactory(Factory<SSLContext> 
sslCtxFactory) {
         this.sslCtxFactory = sslCtxFactory;
 
         return this;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridTcpRouterImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridTcpRouterImpl.java
index 4e06092ce79..2682a12a556 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridTcpRouterImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridTcpRouterImpl.java
@@ -23,10 +23,10 @@ import java.net.UnknownHostException;
 import java.nio.ByteOrder;
 import java.util.Collection;
 import java.util.UUID;
+import javax.cache.configuration.Factory;
 import javax.management.JMException;
 import javax.management.ObjectName;
 import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
@@ -34,7 +34,6 @@ import org.apache.ignite.internal.client.GridClientException;
 import org.apache.ignite.internal.client.router.GridTcpRouter;
 import org.apache.ignite.internal.client.router.GridTcpRouterConfiguration;
 import org.apache.ignite.internal.client.router.GridTcpRouterMBean;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import 
org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
 import org.apache.ignite.internal.util.nio.GridNioCodecFilter;
 import org.apache.ignite.internal.util.nio.GridNioFilter;
@@ -118,14 +117,9 @@ public class GridTcpRouterImpl implements GridTcpRouter, 
GridTcpRouterMBean, Lif
 
         SSLContext sslCtx;
 
-        try {
-            GridSslContextFactory sslCtxFactory = cfg.getSslContextFactory();
+        Factory<SSLContext> sslCtxFactory = cfg.getSslContextFactory();
 
-            sslCtx = sslCtxFactory == null ? null : 
sslCtxFactory.createSslContext();
-        }
-        catch (SSLException e) {
-            throw new IgniteException("Failed to create SSL context.", e);
-        }
+        sslCtx = sslCtxFactory == null ? null : sslCtxFactory.create();
 
         for (int port = cfg.getPort(), last = port + cfg.getPortRange(); port 
<= last; port++) {
             if (startTcpServer(hostAddr, port, lsnr, parser, cfg.isNoDelay(), 
sslCtx, cfg.isSslClientAuth(),
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslBasicContextFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslBasicContextFactory.java
deleted file mode 100644
index e500705414d..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslBasicContextFactory.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.client.ssl;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.GeneralSecurityException;
-import java.security.KeyStore;
-import java.security.cert.X509Certificate;
-import java.util.Arrays;
-import java.util.Collection;
-import javax.cache.configuration.Factory;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLParameters;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509TrustManager;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.ssl.SSLContextWrapper;
-import org.apache.ignite.ssl.SslContextFactory;
-
-import static org.apache.ignite.ssl.SslContextFactory.DFLT_KEY_ALGORITHM;
-import static org.apache.ignite.ssl.SslContextFactory.DFLT_SSL_PROTOCOL;
-import static org.apache.ignite.ssl.SslContextFactory.DFLT_STORE_TYPE;
-
-/**
- * Basic ssl context factory that provides ssl context configuration with 
specified key
- * and trust stores.
- * <p>
- * In some cases it is useful to disable certificate validation of client side 
(e.g. when connecting
- * to a server with self-signed certificate). This can be achieved by setting 
a disabled trust manager
- * to this factory, which can be obtained by {@link 
#getDisabledTrustManager()} method:
- * <pre>
- *     GridSslBasicContextFactory factory = new GridSslBasicContextFactory();
- *     
factory.setTrustManagers(GridSslBasicContextFactory.getDisabledTrustManager());
- *     // Rest of initialization.
- * </pre>
- * @deprecated Use {@link Factory} instead.
- */
-@Deprecated
-public class GridSslBasicContextFactory implements GridSslContextFactory {
-    /** SSL protocol. */
-    private String proto = DFLT_SSL_PROTOCOL;
-
-    /** Key manager algorithm. */
-    private String keyAlgorithm = DFLT_KEY_ALGORITHM;
-
-    /** Key store type. */
-    private String keyStoreType = DFLT_STORE_TYPE;
-
-    /** Path to key store file */
-    private String keyStoreFilePath;
-
-    /** Key store password */
-    private char[] keyStorePwd;
-
-    /** Trust store type. */
-    private String trustStoreType = DFLT_STORE_TYPE;
-
-    /** Path to trust store. */
-    private String trustStoreFilePath;
-
-    /** Trust store password */
-    private char[] trustStorePwd;
-
-    /** Trust managers. */
-    private TrustManager[] trustMgrs;
-
-    /** Enabled cipher suites. */
-    private String[] cipherSuites;
-
-    /** Enabled protocols. */
-    private String[] protocols;
-
-    /**
-     * Gets key store type used for context creation.
-     *
-     * @return Key store type.
-     */
-    public String getKeyStoreType() {
-        return keyStoreType;
-    }
-
-    /**
-     * Sets key store type used in context initialization. If not provided, 
{@link SslContextFactory#DFLT_STORE_TYPE}
-     * will be used.
-     *
-     * @param keyStoreType Key store type.
-     */
-    public void setKeyStoreType(String keyStoreType) {
-        A.notNull(keyStoreType, "keyStoreType");
-
-        this.keyStoreType = keyStoreType;
-    }
-
-    /**
-     * Gets trust store type used for context creation.
-     *
-     * @return trust store type.
-     */
-    public String getTrustStoreType() {
-        return trustStoreType;
-    }
-
-    /**
-     * Sets trust store type used in context initialization. If not provided, 
{@link SslContextFactory#DFLT_STORE_TYPE}
-     * will be used.
-     *
-     * @param trustStoreType Trust store type.
-     */
-    public void setTrustStoreType(String trustStoreType) {
-        A.notNull(trustStoreType, "trustStoreType");
-
-        this.trustStoreType = trustStoreType;
-    }
-
-    /**
-     * Gets protocol for secure transport.
-     *
-     * @return SSL protocol name.
-     */
-    public String getProtocol() {
-        return proto;
-    }
-
-    /**
-     * Sets protocol for secure transport. If not specified, {@link 
SslContextFactory#DFLT_SSL_PROTOCOL} will be used.
-     *
-     * @param proto SSL protocol name.
-     */
-    public void setProtocol(String proto) {
-        A.notNull(proto, "proto");
-
-        this.proto = proto;
-    }
-
-    /**
-     * Gets algorithm that will be used to create a key manager. If not 
specified, {@link SslContextFactory#DFLT_KEY_ALGORITHM}
-     * will be used.
-     *
-     * @return Key manager algorithm.
-     */
-    public String getKeyAlgorithm() {
-        return keyAlgorithm;
-    }
-
-    /**
-     * Sets key manager algorithm that will be used to create a key manager. 
Notice that in most cased default value
-     * suites well, however, on Android platform this value need to be set to 
<tt>X509<tt/>.
-     *
-     * @param keyAlgorithm Key algorithm name.
-     */
-    public void setKeyAlgorithm(String keyAlgorithm) {
-        A.notNull(keyAlgorithm, "keyAlgorithm");
-
-        this.keyAlgorithm = keyAlgorithm;
-    }
-
-    /**
-     * Gets path to the key store file.
-     *
-     * @return Path to key store file.
-     */
-    public String getKeyStoreFilePath() {
-        return keyStoreFilePath;
-    }
-
-    /**
-     * Sets path to the key store file. This is a mandatory parameter since
-     * ssl context could not be initialized without key manager.
-     *
-     * @param keyStoreFilePath Path to key store file.
-     */
-    public void setKeyStoreFilePath(String keyStoreFilePath) {
-        A.notNull(keyStoreFilePath, "keyStoreFilePath");
-
-        this.keyStoreFilePath = keyStoreFilePath;
-    }
-
-    /**
-     * Gets key store password.
-     *
-     * @return Key store password.
-     */
-    public char[] getKeyStorePassword() {
-        return keyStorePwd;
-    }
-
-    /**
-     * Sets key store password.
-     *
-     * @param keyStorePwd Key store password.
-     */
-    public void setKeyStorePassword(char[] keyStorePwd) {
-        A.notNull(keyStorePwd, "keyStorePwd");
-
-        this.keyStorePwd = keyStorePwd;
-    }
-
-    /**
-     * Gets path to the trust store file.
-     *
-     * @return Path to the trust store file.
-     */
-    public String getTrustStoreFilePath() {
-        return trustStoreFilePath;
-    }
-
-    /**
-     * Sets path to the trust store file. This is an optional parameter,
-     * however one of the {@code setTrustStoreFilePath(String)}, {@link 
#setTrustManagers(TrustManager[])}
-     * properties must be set.
-     *
-     * @param trustStoreFilePath Path to the trust store file.
-     */
-    public void setTrustStoreFilePath(String trustStoreFilePath) {
-        this.trustStoreFilePath = trustStoreFilePath;
-    }
-
-    /**
-     * Gets trust store password.
-     *
-     * @return Trust store password.
-     */
-    public char[] getTrustStorePassword() {
-        return trustStorePwd;
-    }
-
-    /**
-     * Sets trust store password.
-     *
-     * @param trustStorePwd Trust store password.
-     */
-    public void setTrustStorePassword(char[] trustStorePwd) {
-        this.trustStorePwd = trustStorePwd;
-    }
-
-    /**
-     * Gets pre-configured trust managers.
-     *
-     * @return Trust managers.
-     */
-    public TrustManager[] getTrustManagers() {
-        return trustMgrs;
-    }
-
-    /**
-     * Sets pre-configured trust managers. This is an optional parameter,
-     * however one of the {@link #setTrustStoreFilePath(String)}, {@code 
#setTrustManagers(TrustManager[])}
-     *
-     * @param trustMgrs Pre-configured trust managers.
-     */
-    public void setTrustManagers(TrustManager... trustMgrs) {
-        this.trustMgrs = trustMgrs;
-    }
-
-    /**
-     * Gets enabled cipher suites.
-     *
-     * @return Enabled cipher suites.
-     */
-    public String[] getCipherSuites() {
-        return cipherSuites;
-    }
-
-    /**
-     * Sets enabled cipher suites.
-     *
-     * @param cipherSuites Enabled cipher suites.
-     */
-    public void setCipherSuites(String... cipherSuites) {
-        this.cipherSuites = cipherSuites;
-    }
-
-    /**
-     * Sets enabled cipher suites.
-     *
-     * @param cipherSuites Enabled cipher suites.
-     */
-    public void setCipherSuites(Collection<String> cipherSuites) {
-        if (!F.isEmpty(cipherSuites))
-            setCipherSuites(cipherSuites.toArray(new String[0]));
-    }
-
-    /**
-     * Gets enabled protocols.
-     *
-     * @return Enabled protocols.
-     */
-    public String[] getProtocols() {
-        return protocols;
-    }
-
-    /**
-     * Sets enabled protocols.
-     *
-     * @param protocols Enabled protocols.
-     */
-    public void setProtocols(String... protocols) {
-        this.protocols = protocols;
-    }
-
-    /**
-     * Sets enabled protocols.
-     *
-     * @param protocols Enabled protocols.
-     */
-    public void setProtocols(Collection<String> protocols) {
-        if (!F.isEmpty(protocols))
-            setProtocols(protocols.toArray(new String[0]));
-    }
-
-    /**
-     * Returns an instance of trust manager that will always succeed 
regardless of certificate provided.
-     *
-     * @return Trust manager instance.
-     */
-    public static TrustManager getDisabledTrustManager() {
-        return new DisabledX509TrustManager();
-    }
-
-    /** {@inheritDoc} */
-    @Override public SSLContext createSslContext() throws SSLException {
-        checkParameters();
-
-        try {
-            KeyManagerFactory keyMgrFactory = 
KeyManagerFactory.getInstance(keyAlgorithm);
-
-            KeyStore keyStore = loadKeyStore(keyStoreType, keyStoreFilePath, 
keyStorePwd);
-
-            keyMgrFactory.init(keyStore, keyStorePwd);
-
-            TrustManager[] mgrs = trustMgrs;
-
-            if (mgrs == null) {
-                TrustManagerFactory trustMgrFactory = 
TrustManagerFactory.getInstance(keyAlgorithm);
-
-                KeyStore trustStore = loadKeyStore(trustStoreType, 
trustStoreFilePath, trustStorePwd);
-
-                trustMgrFactory.init(trustStore);
-
-                mgrs = trustMgrFactory.getTrustManagers();
-            }
-
-            SSLContext ctx = SSLContext.getInstance(proto);
-
-            if (cipherSuites != null || protocols != null) {
-                SSLParameters sslParameters = new SSLParameters();
-
-                if (cipherSuites != null)
-                    sslParameters.setCipherSuites(cipherSuites);
-
-                if (protocols != null)
-                    sslParameters.setProtocols(protocols);
-
-                ctx = new SSLContextWrapper(ctx, sslParameters);
-            }
-
-            ctx.init(keyMgrFactory.getKeyManagers(), mgrs, null);
-
-            return ctx;
-        }
-        catch (GeneralSecurityException e) {
-            throw new SSLException("Failed to initialize SSL context " + 
parameters(), e);
-        }
-    }
-
-    /**
-     * Builds human-readable string with factory parameters.
-     *
-     * @return Parameters string.
-     */
-    private String parameters() {
-        StringBuilder buf = new 
StringBuilder("[keyStoreType=").append(keyStoreType);
-
-        buf.append(", proto=").append(proto).append(", 
keyStoreFile=").append(keyStoreFilePath);
-
-        if (trustMgrs != null)
-            buf.append(", trustMgrs=").append(Arrays.toString(trustMgrs));
-        else
-            buf.append(", trustStoreFile=").append(trustStoreFilePath);
-
-        buf.append(']');
-
-        return buf.toString();
-    }
-
-    /**
-     * Checks that all required parameters are set.
-     *
-     * @throws SSLException If any of required parameters is missing.
-     */
-    private void checkParameters() throws SSLException {
-        assert keyStoreType != null;
-        assert proto != null;
-
-        checkNullParameter(keyStoreFilePath, "keyStoreFilePath");
-        checkNullParameter(keyStorePwd, "keyStorePwd");
-
-        if (trustMgrs == null) {
-            if (trustStoreFilePath == null)
-                throw new SSLException("Failed to initialize SSL context 
(either trustStoreFilePath or " +
-                    "trustManagers must be provided)");
-            else
-                checkNullParameter(trustStorePwd, "trustStorePwd");
-        }
-    }
-
-    /**
-     * @param param Value.
-     * @param name Name.
-     * @throws SSLException If {@code null}.
-     */
-    private void checkNullParameter(Object param, String name) throws 
SSLException {
-        if (param == null)
-            throw new SSLException("Failed to initialize SSL context 
(parameter cannot be null): " + name);
-    }
-
-    /**
-     * By default, this method simply opens a raw file input stream. 
Subclasses may override this method
-     * if some specific location should be handled (this may be a case for 
Android users).
-     *
-     * @param filePath Path to the file.
-     * @return Opened input stream.
-     * @throws IOException If stream could not be opened.
-     */
-    protected InputStream openFileInputStream(String filePath) throws 
IOException {
-        return new FileInputStream(filePath);
-    }
-
-    /**
-     * Loads key store with configured parameters.
-     *
-     * @param keyStoreType Type of key store.
-     * @param storeFilePath Path to key store file.
-     * @param keyStorePwd Store password.
-     * @return Initialized key store.
-     * @throws SSLException If key store could not be initialized.
-     */
-    private KeyStore loadKeyStore(String keyStoreType, String storeFilePath, 
char[] keyStorePwd) throws SSLException {
-        InputStream input = null;
-
-        try {
-            KeyStore keyStore = KeyStore.getInstance(keyStoreType);
-
-            input = openFileInputStream(storeFilePath);
-
-            keyStore.load(input, keyStorePwd);
-
-            return keyStore;
-        }
-        catch (GeneralSecurityException e) {
-            throw new SSLException("Failed to initialize key store (security 
exception occurred) [type=" +
-                keyStoreType + ", keyStorePath=" + storeFilePath + ']', e);
-        }
-        catch (FileNotFoundException e) {
-            throw new SSLException("Failed to initialize key store (key store 
file was not found): [path=" +
-                storeFilePath + ", msg=" + e.getMessage() + ']');
-        }
-        catch (IOException e) {
-            throw new SSLException("Failed to initialize key store (I/O error 
occurred): " + storeFilePath, e);
-        }
-        finally {
-            if (input != null) {
-                try {
-                    input.close();
-                }
-                catch (IOException ignored) {
-                }
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return getClass().getSimpleName() + parameters();
-    }
-
-    /**
-     * Disabled trust manager, will skip all certificate checks.
-     */
-    private static class DisabledX509TrustManager implements X509TrustManager {
-        /** Empty certificate array. */
-        private static final X509Certificate[] CERTS = new X509Certificate[0];
-
-        /** {@inheritDoc} */
-        @Override public void checkClientTrusted(X509Certificate[] 
x509Certificates, String s) {
-            // No-op, all clients are trusted.
-        }
-
-        /** {@inheritDoc} */
-        @Override public void checkServerTrusted(X509Certificate[] 
x509Certificates, String s) {
-            // No-op, all servers are trusted.
-        }
-
-        /** {@inheritDoc} */
-        @Override public X509Certificate[] getAcceptedIssuers() {
-            return CERTS;
-        }
-    }
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslContextFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslContextFactory.java
index 9b8a5278aac..a149d60a4b4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslContextFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/ssl/GridSslContextFactory.java
@@ -23,9 +23,6 @@ import javax.net.ssl.SSLException;
 
 /**
  * This interface provides creation of SSL context both for server and client 
use.
- * <p>
- * Usually, it is enough to configure context from a particular key and trust 
stores, this functionality is provided
- * in {@link GridSslBasicContextFactory}.
  * @deprecated Use {@link Factory} instead.
  */
 @Deprecated
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
index cc3e282bf72..9cbb2ec5777 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
@@ -92,8 +92,6 @@ import 
org.apache.ignite.internal.IgniteFutureCancelledCheckedException;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
 import org.apache.ignite.internal.IgniteKernal;
-import org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory;
-import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
 import org.apache.ignite.internal.managers.discovery.CustomMessageWrapper;
 import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -2080,28 +2078,11 @@ public final class GridTestUtils {
         keyMgrFactory.init(keyStore, storePass);
 
         ctx.init(keyMgrFactory.getKeyManagers(),
-            new 
TrustManager[]{GridSslBasicContextFactory.getDisabledTrustManager()}, null);
+            new TrustManager[]{SslContextFactory.getDisabledTrustManager()}, 
null);
 
         return ctx;
     }
 
-    /**
-     * Creates test-purposed SSL context factory from test key store with 
disabled trust manager.
-     *
-     * @return SSL context factory used in test.
-     */
-    public static GridSslContextFactory sslContextFactory() {
-        GridSslBasicContextFactory factory = new GridSslBasicContextFactory();
-
-        factory.setKeyStoreFilePath(
-            
U.resolveIgnitePath(GridTestProperties.getProperty("ssl.keystore.path")).getAbsolutePath());
-        factory.setKeyStorePassword(keyStorePassword().toCharArray());
-
-        
factory.setTrustManagers(GridSslBasicContextFactory.getDisabledTrustManager());
-
-        return factory;
-    }
-
     /**
      * Creates test-purposed SSL context factory from test key store with 
disabled trust manager.
      *

Reply via email to