package com.nicusa; import org.apache.catalina.connector.Connector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer; import org.springframework.util.ResourceUtils; import java.io.FileNotFoundException; public class SslTomcatConnectionCustomizer implements TomcatConnectorCustomizer { private static final Logger log = LoggerFactory.getLogger(SslTomcatConnectionCustomizer.class); private String keystoreFile; private String keystorePassword; private String keystoreType; private String keystoreAlias; public SslTomcatConnectionCustomizer(String absoluteKeystoreFile, String keystorePassword, String keystoreType, String keystoreAlias) { this.keystoreFile = absoluteKeystoreFile; this.keystorePassword = keystorePassword; this.keystoreType = keystoreType; this.keystoreAlias = keystoreAlias; } @Override public void customize (Connector connector) { if (keystoreFile != null) { String absoluteKeystoreFile = null; try { absoluteKeystoreFile = ResourceUtils.getFile(keystoreFile).getAbsolutePath(); connector.setPort(8443); connector.setSecure(true); connector.setScheme("https"); connector.setAttribute("SSLEnabled", true); connector.setAttribute("sslProtocol", "TLS"); connector.setAttribute("protocol", "org.apache.coyote.http11.Http11Protocol"); connector.setAttribute("clientAuth", false); connector.setAttribute("keystoreFile", absoluteKeystoreFile); connector.setAttribute("keystoreType", keystoreType); connector.setAttribute("keystorePass", keystorePassword); connector.setAttribute("keystoreAlias", keystoreAlias); connector.setAttribute("keyPass", keystorePassword); } catch (FileNotFoundException fnfe) { log.error("Could not find keystoreFile: "+keystoreFile+"."); } if(absoluteKeystoreFile == null) { log.warn("Starting server with SSL encryption turned off"); } } } }