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; }