1. 목적
Spring boot에서 https 를 사용하기 위한 embedded tomcat SSL 설정 및 테스트용 인증서 발급
2. 테스트용 인증서 발급
-. CMD (관리자 모드에서 진행)
keytool -genkeypair -alias [name] -keyalg RSA -keysize 2048 -keystore [name].jks -validity 3650 #필요한 정보 입력 #비밀번호는 6자리 이상 #마지막 질문은 한글로 표시되는 경우 '예' 영어로 표시되는 경우 'yes'를 입력해야 정상 종료. #Warning에 뜨는 문구 복사해서 실행 keytool -importkeystore -srckeystore [name].jks -destkeystore [name].jks -deststoretype pkcs12
3. Embedded Tomcat 설정
-. application.yml (예시)
server:
port: [sslport]
ssl:
enabled: true
protocol: TLS
key-store: [path]/[name].jks
key-store-type: PKCS12
key-store-password: [passward]
key-alias: [name]
enabled-protocols:
- TLSv1.1
ciphers:
- [cipher1]:[cipher2]:...
#본래 server.http.port는 Spring boot 2.0에서 존재하지 않는 태그. 추가로 사용하기 위해서 설정하는 부분임(선택사항)
http:
port: [httpport]
-. java class(선택사항 : http, https port를 분리하여 사용할 경우 필요)
public ServletWebServerFactory servletContainer(){
TomcatServletWebserverFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createSslConnector());
return tomcat;
}
@Value("{server.http.port}")
private int serverHttpPort;
private Connector createSslConnector() {
Connector sslConnector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
sslConnector.setPort(serverHttpPort);
return sslConnector;
}
