Real Vectorism. 훨씬 더 입체적으로...

스프링 웹플럭스 기반 SSL 적용 본문

Java (based by Spring Boot 2)

스프링 웹플럭스 기반 SSL 적용

grast 2024. 6. 14. 12:28
반응형

스프링 부트 기반의 SSL 적용이 웹플럭스에서는 잘 먹히지 않는 체감이 들었다.

도대체 무슨 문제가 있어서 그렇게 된 것인가.

 

찾아본 결과 아무래도 스프링 부트의 설정대로만 하는것은 아무래도 임베디드 톰캣을 기반으로 적용되는 설정이었던 모양이다. 확실한 것은 아닌데 웹플럭스의 기본 컨테이너인 Netty 를 위해서는 별도의 설정이 필요한 듯 하다.

 

// 원래 Tab 키로 들여쓰기하는데 블로그에서 쓰면 묘하게 Tab 하나가 너무 길어서 스페이스로 전환함

@Component
public class CustomWebServerFactorySslCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
  @Value("${server.port}") private Integer port;
  @Value("${server.ssl.enabled}") private String enabled;
  @Value("${server.ssl.key-store}") private String keystore;
  @Value("${server.ssl.key-alias}") private String keyAlias;
  @Value("${server.ssl.key-password}") private String keyPassword;
  @Value("${server.ssl.key-store-type}") private String keyStoreType;
  @Value("${server.ssl.key-store-password}") private String keyStorePassword;

  @Override
  public void customize(NettyReactiveWebServerFactory factory) {
    Ssl ssl = new Ssl();
    ssl.setEnabled(Boolean.parseBoolean(enabled));
    ssl.setKeyStore(keystore);
    ssl.setKeyAlias(keyAlias);
    ssl.setKeyPassword(keyPassword);
    ssl.setKeyStoreType(keyStoreType);
    ssl.setKeyStorePassword(keyStorePassword);
    Http2 http2 = new Http2();
    http2.setEnabled(false);
    factory.setSsl(ssl);
    factory.setHttp2(http2);
    factory.setPort(port);
  }
}

 

 

솔직히 이렇게 적어놓고도 이게 맞는지는 확신이 잘 안된다.

반응형
Comments