본문 바로가기
Spring

SPRING BOOT에서 내장 웹 서버: HTTP 와 HTTPS 함께 사용하기

by 치범 2022. 2. 1.

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. 확인

정상적으로 접속되는 것을 확인할 수 있다.

댓글