IT'S DO
728x90

# 에러 : 

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

 

# 원인 :

보통 검증되지 않은 인증서 즉 사설 인증서를 사용한 사이트에서 해당 소스의 api를 불러올때 나옴.

 

# 해결 : 

1. 해당 사이트에서 인증서 사서 쓰기. (해당 사이트의 소스를 부르는쪽, 요청을 받는 쪽 사이트에서 사설 인증서 말고 검증된 인증서 사서 쓰기)

 

2. 요청을 보내는 쪽, 즉 당신의 Spring Boot 서버에서 SSL 인증서 검증을 비활성화하는 방식.

서버에서 사설 인증서 문제를 무시하고 요청을 처리할 수 있도록 설정

springboot 3.0x 버전을 이용한 방식으로, 2.xx 버전은 안됨. 아예 내용이 바껴서 이용하면 에러 발생함.

 

@Configuration
public class AppConfig {

    @Bean
    @Primary
    public RestTemplate restTemplate() throws Exception {
        // SSLContext 설정 (모든 인증서 신뢰)
        SSLContext sslContext = SSLContextBuilder.create()
            .loadTrustMaterial(new TrustStrategy() {
                @Override
                public boolean isTrusted(X509Certificate[] chain, String authType) {
                    return true; // 모든 인증서 신뢰
                }
            })
            .build();

        // PoolingHttpClientConnectionManager 설정
        PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
            .setSSLSocketFactory(
                SSLConnectionSocketFactoryBuilder.create()
                    .setSslContext(sslContext) // 무시 설정된 SSLContext 적용
                    .build()
            )
            .build();

        // CloseableHttpClient 생성
        CloseableHttpClient httpClient = HttpClients
            .custom()
            .setConnectionManager(connectionManager)
            .build();

        // RestTemplate에 HttpClient 설정
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);

        return new RestTemplate(factory);
    }
}

 

 

 

 

profile

IT'S DO

@멋진놈

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!