Print
카테고리: [ Java ]
조회수: 7635

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