1. HTTPS 설정하기
# 키스토어 만들기
keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000
cf) Spring Boot Terminal 내에서 keytool command not found 발생 시
CMD 관리자권한으로 JDK 경로 내(C:\Program Files\Java\jdk1.8.0_161\bin)에서 실행하고 생긴 파일을 옮겨주면 됨
(위치는 pom.xml과 동일)
# application.properties
server.ssl.key-store=keystore.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=xxxxxx
server.ssl.key-alias=spring
# https://localhost:8081
인증서가 로컬 환경(위에서 만든 키스토어)에 있기 때문에 https로 접근하게 되면
브라우저는 인증서의 public key를 모르는 상태이기 때문에 다음과 같은 화면이 보이게 됨
고급>localhost(안전하지 않음)(으)로 이동 클릭 시 화면 이동 가능
# Terminal 에서 확인하기
curl -I --http2 https://localhost:8081/hello
: 마찬가지로 인증서의 public key를 모르기 때문에 오류
curl -I -k --http2 https://localhost:8081/hello
: -k를 주면 실행 가능
# Controller 추가하기
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
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 Spring";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. HTTP Connector 추가하기
https를 적용하고 나면 http는 못쓰게 됨
: http Connector가 하나기 때문에 Connector에 https를 적용하게 되면 http는 사용할 수 없음
# Connector 추가하기
@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(8081);
return connector;
}
: http port를 8081로 했기 때문에 위에서 설정한 https port를 바꿔줘야 함
-> https port : 8443 / http port : 8081
3. HTTP2 설정하기
application.properties 내에 추가
server.http2.enabled=true
Undertow의 경우 HTTPS만 적용이 되어 있으면 아무런 추가 없이 HTTP, HTTP2 사용 가능
톰캣 9.0.X와 JDK9 이상의 경우에는 추가 설정 필요 없음(톰캣 8.5.X의 경우 방법이 복잡함)
HTTP2는 위에서 적어준 SSL 세팅이 되어있어야 함
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
스프링 부트 개념과 활용 - 인프런 | 강의
스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] SpringApplicaton / Banner (0) | 2022.03.12 |
---|---|
[Spring Boot] 독립적으로 실행 가능한 JAR (0) | 2022.03.05 |
[Spring Boot] 내장 웹 서버 응용 - 다른 웹 서버 사용하기 / 웹 서버 사용하지 않기 / 포트 변경하기 (0) | 2022.03.05 |
[Spring Boot] 내장 웹 서버 (0) | 2022.03.05 |
[Spring Boot] Auto Configuration 만들기 (0) | 2022.02.26 |