Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백트래킹알고리즘
- sop cors
- crypto.getrandomvalues()
- 이해할때까지안잔다
- javascript crypto
- javascript 난수생성
- 멀티프로세스 멀티스레드
- 인덱스 알고리즘
- 백트래킹자바
- cors origin
- 대칭키 비대칭키
- crypto 난수생성
- 순열조합
- db 인덱스 개념
- 오블완
- graphql 비교
- 순열조합중복순열중복조합
- 인덱스 예시
- graphql 장단점
- 티스토리챌린지
- crypto 0이상 1미만
- 순열java
- 백트래킹
- 조합java
- 백트래킹java
- cors시나리오
- crypto.getrandomvalues() 부동소수점
- 중복순열중복조합
- cors동작방식
- graphql 예시
Archives
- Today
- Total
물흐르듯코딩
Spring Cloud OpenFeign Https 에러 해결 - SSL Ignore 본문
OpenFeign 적용되어 있는 부분에서 HTTPS 통신을 시도할 때 아래와 같은 오류가 반복적으로 발생했다.
ERROR SSLHandshakeException: No subject alternative names present |
오류의 원인을 찾기 위해 OpenFeign은 무엇인지, SSL 적용은 어떻게 해야하는지
열심히 삽질한 결과를 기록한다🔍
OpenFeign란?
Open Feign은 Netflix에 의해 처음 만들어진 Declarative(선언적인) HTTP Client 도구이다. 현재는 오픈소스로 전환되었으며 Spring Cloud Framework 프로젝트 중 하나이다.
Open Feign은 인터페이스에 어노테이션들만 붙여주면 외부 API를 호출할 수 있어 Http 요청을 간편하게 만들어 보낼 수 있다는 장점이 있다.
@FeignClient(name = "${feign.name}", url = "${feign.url}")
public interface StoreClient {
//..
}
@SpringBootApplication
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Feign https 통신
@FeignClient의 url에 프로토콜을 명시해주지 않으면 기본적으로 http 요청으로 생성된다. 따라서 https로 요청을 생성 해야하는 상황이라면 SSL을 무시하도록 설정하는 코드가 필요하다.
FeignConfiguration에서 feign.Client(feignClient) 을 재정의해서 해결할 수 있다.
public class SslCertificationIgnoreConfiguration {
private SSLSocketFactory sslContextFactory() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext ssl_ctx = SSLContext.getInstance("TLS");
TrustManager[] certs = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[]{};
}
public void checkClientTrusted(X509Certificate[] certs, String t) {
}
public void checkServerTrusted(X509Certificate[] certs, String t) {
}
}};
ssl_ctx.init(null, certs, new SecureRandom());
return ssl_ctx.getSocketFactory();
}
@Bean
public feign.Client client() throws KeyManagementException, NoSuchAlgorithmException {
return new Client.Default(sslContextFactory(), (hostname, session) -> true);
}
}
OpenFeign 공식문서
https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/
🏷 참고