Spring
SPRING BOOT에서 내장 웹 서버: HTTP 와 HTTPS 함께 사용하기
치범
2022. 2. 1. 23:39
1. KeyStore 발급
먼저 HTTPS를 사용하기 위해서 keystore를 발급한다.
$ keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000
shell에 명령어 입력 시, 다음과 같은 절차를 거쳐서 만들어진다.
2. application.properties에 ssl 정보 등록
server.ssl.key-store=keystore.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=******
server.ssl.key-alias=spring
server.port=8443
PORT는 기존 HTTP 8080과 다르게 8443으로 등록했다.
여기까지 마치면, 더 이상 HTTP로는 Web Application이 connect 되지 않는다.
이유는, 기존의 1개의 Connector가 HTTPS와 연결되어있기에 HTTP와 연결될 Connector가 없기 때문이다.
그래서 추가적으로 Connector를 생성해서 HTTP에 할당한다.
3. Connector 생성
package cho.springboot;
import org.apache.catalina.connector.Connector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Application {
@GetMapping("/hello")
public String Hello(){
return "Hello, world!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ServletWebServerFactory serverFactory() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(8080);
return connector;
}
}
ServletWebServerFactory와 Connector를 이용하여 HTTP에 Connector를 할당한다.
4. 확인
정상적으로 접속되는 것을 확인할 수 있다.