2  * Copyright 2016-2017, Nokia Corporation
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  17 package org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client;
 
  19 import java.security.KeyManagementException;
 
  20 import java.security.NoSuchAlgorithmException;
 
  21 import java.security.cert.CertificateException;
 
  23 import javax.net.ssl.SSLContext;
 
  24 import javax.net.ssl.TrustManager;
 
  25 import javax.net.ssl.X509TrustManager;
 
  27 import org.apache.http.client.config.RequestConfig;
 
  28 import org.apache.http.client.methods.HttpDelete;
 
  29 import org.apache.http.client.methods.HttpGet;
 
  30 import org.apache.http.client.methods.HttpPost;
 
  31 import org.apache.http.client.methods.HttpRequestBase;
 
  32 import org.apache.http.config.Registry;
 
  33 import org.apache.http.config.RegistryBuilder;
 
  34 import org.apache.http.conn.socket.ConnectionSocketFactory;
 
  35 import org.apache.http.conn.socket.PlainConnectionSocketFactory;
 
  36 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 
  37 import org.apache.http.impl.client.HttpClientBuilder;
 
  38 import org.apache.http.impl.client.HttpClients;
 
  39 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 
  40 import org.slf4j.Logger;
 
  41 import org.slf4j.LoggerFactory;
 
  42 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 
  43 import org.springframework.context.annotation.Bean;
 
  44 import org.springframework.stereotype.Service;
 
  45 import org.springframework.web.bind.annotation.RequestMethod;
 
  47 @EnableAutoConfiguration
 
  49 public class HttpClientUtils {
 
  50         private static final Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);
 
  53         public static HttpClientBuilder createHttpClientBuilder() {
 
  54                 org.apache.commons.httpclient.protocol.Protocol.unregisterProtocol("https"); 
 
  55                 SSLContext sslcontext = null;
 
  57                         sslcontext = createIgnoreVerifySSL();
 
  58                 } catch (KeyManagementException | NoSuchAlgorithmException e) {
 
  59                         logger.error("HttpRequestProcessor -> generateHttpClient exception. ", e);
 
  62         Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()  
 
  63             .register("http", PlainConnectionSocketFactory.INSTANCE)  
 
  64             .register("https", new SSLConnectionSocketFactory(sslcontext))  
 
  67         PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);  
 
  68         connManager.setMaxTotal(200);
 
  69         connManager.setDefaultMaxPerRoute(50);
 
  71         HttpClientBuilder httpClientBuilder = HttpClients.custom().setConnectionManager(connManager);
 
  73                 return httpClientBuilder;
 
  76         private static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {  
 
  77         SSLContext sc = SSLContext.getInstance("TLSv1.2");  
 
  79         X509TrustManager trustManager = new X509TrustManager() {  
 
  81             public void checkClientTrusted(  
 
  82                     java.security.cert.X509Certificate[] paramArrayOfX509Certificate,  
 
  83                     String paramString) throws CertificateException {  
 
  87             public void checkServerTrusted(  
 
  88                     java.security.cert.X509Certificate[] paramArrayOfX509Certificate,  
 
  89                     String paramString) throws CertificateException {  
 
  93             public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
 
  98         sc.init(null, new TrustManager[] { trustManager }, null);  
 
 102         public static HttpRequestBase getHttpRequest(RequestMethod requestMethod) {
 
 103                 HttpRequestBase base = null;
 
 104                 switch(requestMethod) {
 
 106                                 base = new HttpGet();
 
 109                                 base = new HttpDelete();
 
 112                                 base = new HttpPost();
 
 115                 RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).setConnectionRequestTimeout(20000).build();
 
 116                 base.setConfig(requestConfig);