From e9e5777db6edcbf34d3315a034ca9be2262fd61d Mon Sep 17 00:00:00 2001 From: "k.kedron" Date: Fri, 23 Aug 2019 16:46:49 +0200 Subject: Fully HTTPS support in the catalog-fe Fully HTTPS support: -Updated jvm configuration to support call to the SDC components using HTTPS. -Checkstyle in the recipes -Added buildRestClient method to create the CloseableHttpClient supporting the SSL connection -Sonar fixes in the PluginStatusBL class Issue-ID: SDC-2516 Signed-off-by: Krystian Kedron Change-Id: I35b9e22026898d2cc67a4b2d86d9d508a33fcb59 --- .../org/openecomp/sdc/fe/impl/PluginStatusBL.java | 2 +- .../sdc/fe/listen/FEAppContextListener.java | 61 ++++++++++++++++++---- 2 files changed, 51 insertions(+), 12 deletions(-) (limited to 'catalog-fe/src') diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java index cdb9e0f9bf..6461ccfad6 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java @@ -60,7 +60,7 @@ public class PluginStatusBL { } public String getPluginsList() { - String result = null; + String result; if (pluginsConfiguration == null || pluginsConfiguration.getPluginsList() == null) { LOGGER.warn("Configuration of type {} was not found", PluginsConfiguration.class); diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java index f087f55349..a672b1b201 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/listen/FEAppContextListener.java @@ -3,6 +3,7 @@ * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (c) 2019 Samsung * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +21,27 @@ package org.openecomp.sdc.fe.listen; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import org.apache.http.config.Registry; +import org.apache.http.config.RegistryBuilder; +import org.apache.http.conn.socket.ConnectionSocketFactory; +import org.apache.http.conn.socket.PlainConnectionSocketFactory; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.ssl.SSLContextBuilder; import org.openecomp.sdc.common.api.Constants; import org.openecomp.sdc.common.impl.ExternalConfiguration; import org.openecomp.sdc.common.listener.AppContextListener; @@ -30,15 +52,10 @@ import org.openecomp.sdc.fe.servlets.HealthCheckService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - public class FEAppContextListener extends AppContextListener implements ServletContextListener { - private static final int HEALTH_CHECHK_INTERVALE = 5; - private static final int PROBE_INTERVALE = 15; + private static final int HEALTH_CHECK_INTERVAL = 5; + private static final int PROBE_INTERVAL = 15; private static Logger log = LoggerFactory.getLogger(FEAppContextListener.class.getName()); public void contextInitialized(ServletContextEvent context) { @@ -51,17 +68,22 @@ public class FEAppContextListener extends AppContextListener implements ServletC ExternalConfiguration.getAppName()); context.getServletContext().setAttribute(Constants.CONFIGURATION_MANAGER_ATTR, configurationManager); - PluginStatusBL pbl = new PluginStatusBL(); - context.getServletContext().setAttribute(Constants.PLUGIN_BL_COMPONENT, pbl); + try { + PluginStatusBL pbl = new PluginStatusBL(buildRestClient()); + context.getServletContext().setAttribute(Constants.PLUGIN_BL_COMPONENT, pbl); + } catch (SSLException e) { + log.debug("ERROR: Build rest client failed because ", e); + return; + } // Health Check service HealthCheckService hcs = new HealthCheckService(context.getServletContext()); - hcs.start(configurationManager.getConfiguration().getHealthCheckIntervalInSeconds(HEALTH_CHECHK_INTERVALE)); + hcs.start(configurationManager.getConfiguration().getHealthCheckIntervalInSeconds(HEALTH_CHECK_INTERVAL)); context.getServletContext().setAttribute(Constants.HEALTH_CHECK_SERVICE_ATTR, hcs); // Monitoring service FeMonitoringService fms = new FeMonitoringService(context.getServletContext()); - fms.start(configurationManager.getConfiguration().getSystemMonitoring().getProbeIntervalInSeconds(PROBE_INTERVALE)); + fms.start(configurationManager.getConfiguration().getSystemMonitoring().getProbeIntervalInSeconds(PROBE_INTERVAL)); if (configurationManager.getConfiguration() == null) { log.debug("ERROR: configuration was not properly loaded"); @@ -87,4 +109,21 @@ public class FEAppContextListener extends AppContextListener implements ServletC } + private CloseableHttpClient buildRestClient() throws SSLException { + SSLContextBuilder builder = new SSLContextBuilder(); + try { + builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( + SSLContext.getDefault(), NoopHostnameVerifier.INSTANCE); + Registry registry = + RegistryBuilder.create() + .register("http", new PlainConnectionSocketFactory()).register("https", sslsf) + .build(); + PoolingHttpClientConnectionManager cm = + new PoolingHttpClientConnectionManager(registry); + return HttpClients.custom().setSSLSocketFactory(sslsf).setConnectionManager(cm).build(); + } catch (NoSuchAlgorithmException | KeyStoreException e) { + throw new SSLException(e); + } + } } -- cgit 1.2.3-korg