Spring OpenFeign 사용시 https 신뢰하는 방법

OpenFeign 설정하기, 이 방법은 임시로만 사용하고 실제로는 해당 사이트의 인증서를 JVM에 등록해야 한다.

package com.example.openfeignHttps;

import feign.Client;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

@Configuration
public class CustomFeignConfiguration {

    @Bean
    public feign.Client client() throws NoSuchAlgorithmException, KeyManagementException {
        return new Client.Default(sslContextFactory(), (hostname, session) -> true);
    }

    private SSLSocketFactory sslContextFactory() throws NoSuchAlgorithmException, KeyManagementException {
        SSLContext sslCtx = SSLContext.getInstance("TLS");
        TrustManager[] certs = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

                    }

                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[]{};
                    }
                }
        };
        sslCtx.init(null, certs, new SecureRandom());
        return sslCtx.getSocketFactory();
    }
}

Feign Interface에서 설정파일 지정하기

Last updated