package com.greglturnquist.springagram.backend;
import java.io.FileNotFoundException;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.util.ResourceUtils;
/**
* Configure two Tomcat connectors, 8080/http and 8443/https.
* By default, Spring Security will redirect 8080->8443
*/
@Configuration
@Profile("ssl")
public class SecureTomcatConfiguration {
@Bean
public EmbeddedServletContainerFactory servletContainer() throws FileNotFoundException {
TomcatEmbeddedServletContainerFactory f = new TomcatEmbeddedServletContainerFactory();
f.addAdditionalTomcatConnectors(createSslConnector());
return f;
}
private Connector createSslConnector() throws FileNotFoundException {
Connector connector = new Connector(Http11NioProtocol.class.getName());
Http11NioProtocol protocol =
(Http11NioProtocol)connector.getProtocolHandler();
connector.setPort(8443);
connector.setSecure(true);
connector.setScheme("https");
protocol.setSSLEnabled(true);
protocol.setKeyAlias("springagram");
protocol.setKeystorePass("password");
protocol.setKeystoreFile(ResourceUtils
.getFile("src/main/resources/keystore.jks").getAbsolutePath());
protocol.setSslProtocol("TLS");
return connector;
}
}