본문 바로가기
Dev/Spring Boot

[스프링 부트 개념과 활용] 내장 웹 서버 응용 2부

by dev_jsk 2020. 8. 19.
728x90
반응형

HTTPS(SSL) 설정하기

키스토어 만들기 예제

1. 키스토어 생성

저장소 비밀번호 지정
기타 정보 입력
생성 확인

2. application.properties 수정

// application.properties
// Keystore 정보 설정

server.ssl.key-store=keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=spring

동작 확인

1. HTTP 접근 시

Bad Request 발생

 

2. HTTPS 접근 시

* 키스토어 내 존재하는 인증서가 공인된 인증서가 아니기 때문에 경고 페이지 출력

 

상단 이미지 고급 내 이동을 누르면 정상 동작 확인

 

3. CURL 명령어 사용

Application.java 수정

// Application.java

@SpringBootApplication
@RestController
public class Application {
    @GetMapping(value="/hello")
    public String hello() {
        return "Hello Spring";
    }
    
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

결과 확인

SSL 이 적용되어있기 때문에 400 Error
공인된 인증서가 아니기 때문에 발생하는 Error
-k 옵션을 추가하여 정상적으로 동작 확인

참고

https://gist.github.com/keesun/f93f0b83d7232137283450e08a53c4fd

 

Spring Boot SSL Sample (self signed)

Spring Boot SSL Sample (self signed). GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

HTTP Connector

HTTP 커넥터 는 1개만 존재하는데 위 예제에서 HTTP에 SSL을 적용하여 해당 커넥터에 적용했기 때문에 HTTP를 받을 수 있는 커넥터가 없다.

코딩을 이용한 추가 Http Connector 만들기

예제

1. Application.java 수정

// Application.java

@Bean
public ServletWebServerFactory serverFactory() {
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
    // Tomcat Connector 추가
    tomcat.addAdditionalTomcatconnectors(createStandardConnector());
    return tomcat;
}

private Connector createStandardConnector() {
    Connector connector = new Connector("org.apach.coyote.http11.Http11NioProtocol");
    connector.setPort(8080);
    return connector;
}

2. application.properties 수정

// application.properties

server.ssl.key-store=keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=spring
server.port=8443	// Server port 지정

동작 확인

Https 용 8443 포트와 Http 용 8080 포트로 동작 확인
Https, Http 동작 확인

참고

https://github.com/spring-projects/spring-boot/blob/v2.0.3.RELEASE/spring-boot-samples/spring-boot-sample-tomcat-multi-connectors/src/main/java/sample/tomcat/multiconnector/SampleTomcatTwoConnectorsApplication.java

 

spring-projects/spring-boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

HTTP2

HTTP2 활성화 하는 방법

기본적으로 SSL 이 적용되어 있어야 한다.

1. application.properties 수정

// application.properties

server.ssl.key-store=keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=spring
server.port=8443
server.http2.enabled=true	// http2 활성화

* 제약사항이 서버마다 다르다.

  Undertow 의 경우 Https만 적용되어 있으면 추가설정이 필요 없다.

  Tomcat v8.5 의 경우 시스템에 특정 라이브러리가 필요하지만, Tomcat v 9.xJDK 9 를 사용할 경우

  추가설정이 필요 없다.

 

2. Undertow 사용을 위한 의존성 추가

// pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- Tomcat 제외 -->
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    <!-- Undertow 추가 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>
</dependencies>

동작 확인

HTTP/2 로 동작 확인

 

728x90
반응형

댓글