IT/Spring

Spring Boot HTTPS 설정 & WebClient HTTPS

최고영회 2020. 2. 20. 10:12
728x90
반응형
SMALL

Spring Boot 에서 HTTP를 설정하는 것은 간단하다.

참고로 테스트 한 Spring Boot 의 버전은 2.2.1 이며 undertow 를 사용했다.

keytool 을 이용하여 인증서를 생성한다.

keytool -genkey -alias yhkim-ssl -keyalg RSA -keysize 2048 -validity 7300 -keypass 12341234 -keystore yhkim-server.jks

 

application.properties 또는 application.yaml 파일에 ssl 관련 옵션을 설정한다.

server: 
  servlet: 
    context-path: /linkage 
  port: 8082 
  ssl: 
    enabled: true 
    key-alias: yhkim-ssl 
    key-store: C:\\dev\\yhkim-server.jks 
    key-store-password: 12341234 
    key-store-type: PKCS12

start 해 보자.

https 로 잘 start 된다.

끝났다..... ssl.key-password 도 있는데 이걸로 설정하면 안된다.. 이것 때문에 약간의 삽질을..

이제 API Server 가 HTTPS 로 동작하니 webclient 도 https 통신이 되도록 변경해 보자.

// 기존 코드 
return WebClient.builder() 
                .baseUrl(prop.getInfosaferHost()) 
                .build();

 

// 변경된 코드
HttpClient httpClient = HttpClient.create().secure(t -> { 
  try { 
    t.sslContext(SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build()); 
  } catch (SSLException e) { 
    log.error("SSLException\n", e); 
  } 
}); 

return WebClient.builder() 
                .baseUrl(prop.getInfosaferHost()) 
                .clientConnector(new ReactorClientHttpConnector(httpClient))
                .build();

728x90
반응형
LIST