diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
index 68e44f9..1e4e614 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
+++ b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/base/configuration/BaseFeignClientConfiguration.java
@@ -1,6 +1,8 @@
 package com.supwisdom.institute.backend.admin.aggr.apis.remote.base.configuration;
 
+import org.apache.http.conn.HttpClientConnectionManager;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
 import org.springframework.context.annotation.Bean;
 
 import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
@@ -16,7 +18,9 @@
       @Value("${sw-backend-base-api.client-auth.key-store:}") String keyStore,
       @Value("${sw-backend-base-api.client-auth.key-store-password:}") String keyStorePassword,
       @Value("${sw-backend-base-api.client-auth.trust-store:}") String trustStore,
-      @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword) {
+      @Value("${sw-backend-base-api.client-auth.trust-store-password:}") String trustStorePassword,
+      ApacheHttpClientFactory httpClientFactory,
+      HttpClientConnectionManager httpClientConnectionManager) {
     
     return FeignClientBuilder.builder()
         .enabled(enabled)
@@ -26,7 +30,7 @@
         .trustStore(trustStore)
         .trustStorePassword(trustStorePassword)
         .build()
-        .client();
+        .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
   }
 
 }
diff --git a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
index 88f5cda..ca60e7d 100644
--- a/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
+++ b/aggr/admin/src/main/java/com/supwisdom/institute/backend/admin/aggr/apis/remote/biz/configuration/BizFeignClientConfiguration.java
@@ -1,6 +1,8 @@
 package com.supwisdom.institute.backend.admin.aggr.apis.remote.biz.configuration;
 
+import org.apache.http.conn.HttpClientConnectionManager;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
 import org.springframework.context.annotation.Bean;
 
 import com.supwisdom.institute.backend.common.core.feign.FeignClientBuilder;
@@ -16,7 +18,9 @@
       @Value("${sw-backend-biz-api.client-auth.key-store:}") String keyStore,
       @Value("${sw-backend-biz-api.client-auth.key-store-password:}") String keyStorePassword,
       @Value("${sw-backend-biz-api.client-auth.trust-store:}") String trustStore,
-      @Value("${sw-backend-biz-api.client-auth.trust-store-password:}") String trustStorePassword) {
+      @Value("${sw-backend-biz-api.client-auth.trust-store-password:}") String trustStorePassword,
+      ApacheHttpClientFactory httpClientFactory,
+      HttpClientConnectionManager httpClientConnectionManager) {
     
     return FeignClientBuilder.builder()
       .enabled(enabled)
@@ -26,7 +30,7 @@
       .trustStore(trustStore)
       .trustStorePassword(trustStorePassword)
       .build()
-      .client();
+      .apacheHttpClient(httpClientFactory, httpClientConnectionManager);
   }
 
 }
diff --git a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java
index 181ad10..d970094 100644
--- a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java
+++ b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/feign/FeignClientBuilder.java
@@ -1,16 +1,18 @@
 package com.supwisdom.institute.backend.common.core.feign;
 
 import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
 
 import lombok.extern.slf4j.Slf4j;
 
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.conn.HttpClientConnectionManager;
 import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.ssl.SSLContextBuilder;
 import org.apache.http.ssl.SSLContexts;
+import org.springframework.cloud.commons.httpclient.ApacheHttpClientFactory;
 import org.springframework.util.ResourceUtils;
 
-import feign.Client;
 import feign.httpclient.ApacheHttpClient;
 
 @Slf4j
@@ -25,7 +27,9 @@
   private String trustStore;
   private String trustStorePassword;
   
-  public Client client() {
+  public ApacheHttpClient apacheHttpClient(
+      ApacheHttpClientFactory httpClientFactory,
+      HttpClientConnectionManager httpClientConnectionManager) {
 
     if (!enabled) {
       return new ApacheHttpClient();
@@ -54,9 +58,21 @@
         
         SSLContext sslContext = sslContextBuilder.build();
         
-        SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+        //SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+        
+        RequestConfig defaultRequestConfig = RequestConfig.custom()
+            .setConnectTimeout(12000)
+            .setRedirectsEnabled(true)
+            .build();
 
-        Client trustSSLSockets = new Client.Default(sslSocketFactory, new NoopHostnameVerifier());  // FIXME: feign Client
+        CloseableHttpClient httpClient = httpClientFactory.createBuilder().
+            setSSLContext(sslContext).
+            setSSLHostnameVerifier(new NoopHostnameVerifier()).   // FIXME: HostnameVerifier
+            setConnectionManager(httpClientConnectionManager).
+            setDefaultRequestConfig(defaultRequestConfig).build();
+        
+
+        ApacheHttpClient trustSSLSockets = new ApacheHttpClient(httpClient);
         log.info("feignClient load with ssl.");
         return trustSSLSockets;
       } catch (Exception e) {
