SSLConfig.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.utils.transport.http;
- import java.io.Serializable;
- import java.security.KeyStore;
- import java.security.cert.CertStore;
- import java.util.Map;
- import org.apache.commons.lang.StringUtils;
- import org.openspcoop2.utils.LoggerBuffer;
- import org.slf4j.Logger;
- /**
- * SSLConfig
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class SSLConfig implements Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- // AUTENTICAZIONE SERVER:
- // TrustAllCerts
- private boolean trustAllCerts = false;
- // TrustStore
- private transient KeyStore trustStore;
- private transient boolean trustStoreHsm;
- // Path del trustStore che contiene il certificato del server.
- private String trustStoreLocation;
- // Password del trustStore che contiene il certificato del server.
- private String trustStorePassword;
- // the standard name of the requested trust management algorithm
- private String trustManagementAlgorithm;
- // tipo del truststore
- private String trustStoreType;
- // CRLs
- private String trustStoreCRLsLocation;
- // CertStore
- private transient CertStore trustStoreCRLs;
- // OCSP Policy
- private String trustStoreOCSPPolicy;
-
-
- // AUTENTICAZIONE CLIENT:
- // KeyStore
- private transient KeyStore keyStore;
- private transient boolean keyStoreHsm;
- // Path del keyStore che contiene il certificato del client e la chiave privata del client.
- private String keyStoreLocation;
- // Password del keyStore che contiene il certificato del client
- private String keyStorePassword;
- // Alias della chiave privata
- private String keyAlias;
- // Password della chiave privata
- private String keyPassword;
- // the standard name of the requested key management algorithm
- private String keyManagementAlgorithm;
- // tipo del keystore
- private String keyStoreType;
- // BYOK Policy
- private String keyStoreBYOKPolicy;
- // HostName verifier
- private boolean hostnameVerifier = true;
- // Eventuale classe da utilizzare per effettuare hostnameVerifier al posto di quella di default
- private String classNameHostnameVerifier;
-
- // TipologiaSSL
- private String sslType= null;
-
- // Use Secure Random
- private boolean secureRandomSet = false;
- private boolean secureRandom = false;
- private String secureRandomAlgorithm = null;
-
- // Utilities
- private StringBuilder sbError;
- private StringBuilder sbDebug;
- private transient Logger logger;
-
- // Dynamic Map
- private Map<String,Object> dynamicMap;
-
- @Override
- public String toString() {
- return this.toString(false);
- }
- public String toString(boolean includePassword) {
- StringBuilder sb = new StringBuilder();
-
- sb.append("sslType=").append(this.sslType);
- sb.append(" ");
-
- sb.append("secureRandom=").append(this.secureRandom);
- sb.append(" ");
- if(this.secureRandomAlgorithm!=null) {
- sb.append("secureRandomAlgorithm=").append(this.secureRandomAlgorithm);
- sb.append(" ");
- }
-
- sb.append("hostnameVerifier=").append(this.hostnameVerifier);
- sb.append(" ");
- if(this.classNameHostnameVerifier!=null) {
- sb.append("classNameHostnameVerifier=").append(this.classNameHostnameVerifier);
- sb.append(" ");
- }
-
- sb.append("trustAllCerts=").append(this.trustAllCerts);
- sb.append(" ");
- if(!this.trustAllCerts) {
- sb.append("trustStoreLocation=").append(this.trustStoreLocation);
- sb.append(" ");
- sb.append("trustStoreType=").append(this.trustStoreType);
- sb.append(" ");
- sb.append("trustStorePassword=").append(includePassword? this.trustStorePassword : hidePassword(this.trustStorePassword) );
- sb.append(" ");
- sb.append("trustManagementAlgorithm=").append(this.trustManagementAlgorithm);
- sb.append(" ");
- sb.append("trustStoreCRLsLocation=").append(this.trustStoreCRLsLocation);
- sb.append(" ");
- sb.append("trustStoreOCSPPolicy=").append(this.trustStoreOCSPPolicy);
- sb.append(" ");
- }
- else if(this.trustStoreOCSPPolicy!=null && StringUtils.isNotEmpty(this.trustStoreOCSPPolicy)){
- sb.append("trustStoreCRLsLocation=").append(this.trustStoreCRLsLocation);
- sb.append(" ");
- sb.append("trustStoreOCSPPolicy=").append(this.trustStoreOCSPPolicy);
- sb.append(" ");
- }
-
- if(this.keyStoreLocation!=null) {
- sb.append("keyStoreLocation=").append(this.keyStoreLocation);
- sb.append(" ");
- sb.append("keyStoreType=").append(this.keyStoreType);
- sb.append(" ");
- sb.append("keyStorePassword=").append(includePassword? this.keyStorePassword : hidePassword(this.keyStorePassword) );
- sb.append(" ");
- sb.append("keyStoreBYOKPolicy=").append(this.keyStoreBYOKPolicy);
- sb.append(" ");
- sb.append("keyAlias=").append(this.keyAlias);
- sb.append(" ");
- sb.append("keyPassword=").append(includePassword? this.keyPassword : hidePassword(this.keyPassword) );
- sb.append(" ");
- sb.append("keyManagementAlgorithm=").append(this.keyManagementAlgorithm);
- sb.append(" ");
- }
- else {
- sb.append("keyStore=disabled");
- sb.append(" ");
- }
-
- return sb.toString();
- }
- private String hidePassword(String value) {
- return (value!=null) ? "***" : "unset" ;
- }
- public boolean isTrustAllCerts() {
- return this.trustAllCerts;
- }
- public void setTrustAllCerts(boolean trustAllCerts) {
- this.trustAllCerts = trustAllCerts;
- }
-
- public KeyStore getTrustStore() {
- return this.trustStore;
- }
- public boolean isTrustStoreHsm() {
- return this.trustStoreHsm;
- }
- public void setTrustStore(KeyStore trustStore) {
- this.setTrustStore(trustStore, false);
- }
- public void setTrustStore(KeyStore trustStore, boolean hsm) {
- this.trustStore = trustStore;
- this.trustStoreHsm = hsm;
- }
- public KeyStore getKeyStore() {
- return this.keyStore;
- }
- public boolean isKeyStoreHsm() {
- return this.keyStoreHsm;
- }
- public void setKeyStore(KeyStore keyStore) {
- this.setKeyStore(keyStore, false);
- }
- public void setKeyStore(KeyStore keyStore, boolean hsm) {
- this.keyStore = keyStore;
- this.keyStoreHsm = hsm;
- }
-
- public String getTrustStoreLocation() {
- return this.trustStoreLocation;
- }
- public void setTrustStoreLocation(String trustStoreLocation) {
- this.trustStoreLocation = trustStoreLocation;
- }
- public String getTrustStorePassword() {
- return this.trustStorePassword;
- }
- public void setTrustStorePassword(String trustStorePassword) {
- this.trustStorePassword = trustStorePassword;
- }
- public String getTrustManagementAlgorithm() {
- return this.trustManagementAlgorithm;
- }
- public void setTrustManagementAlgorithm(String trustManagementAlgorithm) {
- this.trustManagementAlgorithm = trustManagementAlgorithm;
- }
- public String getTrustStoreType() {
- return this.trustStoreType;
- }
- public void setTrustStoreType(String trustStoreType) {
- this.trustStoreType = trustStoreType;
- }
-
- public String getTrustStoreCRLsLocation() {
- return this.trustStoreCRLsLocation;
- }
- public void setTrustStoreCRLsLocation(String trustStoreCRLsLocation) {
- this.trustStoreCRLsLocation = trustStoreCRLsLocation;
- }
- public CertStore getTrustStoreCRLs() {
- return this.trustStoreCRLs;
- }
- public void setTrustStoreCRLs(CertStore trustStoreCRLs) {
- this.trustStoreCRLs = trustStoreCRLs;
- }
- public String getTrustStoreOCSPPolicy() {
- return this.trustStoreOCSPPolicy;
- }
- public void setTrustStoreOCSPPolicy(String trustStoreOCSPPolicy) {
- this.trustStoreOCSPPolicy = trustStoreOCSPPolicy;
- }
-
- public String getKeyStoreLocation() {
- return this.keyStoreLocation;
- }
- public void setKeyStoreLocation(String keyStoreLocation) {
- this.keyStoreLocation = keyStoreLocation;
- }
- public String getKeyStorePassword() {
- return this.keyStorePassword;
- }
- public void setKeyStorePassword(String keyStorePassword) {
- this.keyStorePassword = keyStorePassword;
- }
- public String getKeyAlias() {
- return this.keyAlias;
- }
- public void setKeyAlias(String keyAlias) {
- this.keyAlias = keyAlias;
- }
-
- public String getKeyPassword() {
- return this.keyPassword;
- }
- public void setKeyPassword(String keyPassword) {
- this.keyPassword = keyPassword;
- }
- public String getKeyManagementAlgorithm() {
- return this.keyManagementAlgorithm;
- }
- public void setKeyManagementAlgorithm(String keyManagementAlgorithm) {
- this.keyManagementAlgorithm = keyManagementAlgorithm;
- }
- public String getKeyStoreType() {
- return this.keyStoreType;
- }
- public void setKeyStoreType(String keyStoreType) {
- this.keyStoreType = keyStoreType;
- }
- public String getKeyStoreBYOKPolicy() {
- return this.keyStoreBYOKPolicy;
- }
-
- public void setKeyStoreBYOKPolicy(String keyStoreBYOKPolicy) {
- this.keyStoreBYOKPolicy = keyStoreBYOKPolicy;
- }
-
- public boolean isHostnameVerifier() {
- return this.hostnameVerifier;
- }
- public void setHostnameVerifier(boolean hostnameVerifier) {
- this.hostnameVerifier = hostnameVerifier;
- }
- public String getClassNameHostnameVerifier() {
- return this.classNameHostnameVerifier;
- }
- public void setClassNameHostnameVerifier(String classNameHostnameVerifier) {
- this.classNameHostnameVerifier = classNameHostnameVerifier;
- }
- public String getSslType() {
- return this.sslType;
- }
- public void setSslType(String sslType) {
- this.sslType = sslType;
- }
-
- public boolean isSecureRandom() {
- return this.secureRandom;
- }
- public void setSecureRandom(boolean secureRandom) {
- this.secureRandom = secureRandom;
- this.secureRandomSet = true;
- }
- public boolean isSecureRandomSet() {
- return this.secureRandomSet;
- }
- public String getSecureRandomAlgorithm() {
- return this.secureRandomAlgorithm;
- }
- public void setSecureRandomAlgorithm(String secureRandomAlgorithm) {
- this.secureRandomAlgorithm = secureRandomAlgorithm;
- }
-
- public StringBuilder getSbError() {
- return this.sbError;
- }
- public void setSbError(StringBuilder sbError) {
- this.sbError = sbError;
- }
- public StringBuilder getSbDebug() {
- return this.sbDebug;
- }
- public void setSbDebug(StringBuilder sbDebug) {
- this.sbDebug = sbDebug;
- }
-
- public void setLogger(Logger logger) {
- this.logger = logger;
- }
-
- public LoggerBuffer getLoggerBuffer() {
- LoggerBuffer lb = new LoggerBuffer();
- lb.setSbDebug(this.sbDebug);
- lb.setSbError(this.sbError);
- lb.setLogErrorInDebug(true);
- return lb;
- }
- public LoggerBuffer getLog4jBuffer() {
- LoggerBuffer lb = new LoggerBuffer();
- lb.setLogError(this.logger);
- if(this.sbDebug!=null) {
- lb.setLogDebug(this.logger);
- }
- return lb;
- }
-
- public Map<String, Object> getDynamicMap() {
- return this.dynamicMap;
- }
- public void setDynamicMap(Map<String, Object> dynamicMap) {
- this.dynamicMap = dynamicMap;
- }
- }