방명록
- [JAVA] PKIX path building failed 오류 무시하기2022년 03월 16일 14시 49분 53초에 업로드 된 글입니다.작성자: 봉주니
내부망에서 API 개발, 테스트를 진행 할 때, 발생하는 오류였다.
해당 API 주소의 인증서가 정확히 sectigo ssl 임에도 불구하고 오류가 발생하였다.
인증서 업데이트 정보를 제대로 못받아오는 듯 하다.
따라서, 내부망 통신이기에 인증서 오류를 무시하고자 하였다.
@Bean public SSLConnectionSocketFactory getSSLSocketFactory() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException { TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) {} public void checkServerTrusted(X509Certificate[] certs, String authType) {} }}; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sc, new NoopHostnameVerifier()); return socketFactory; } @Bean(name = "customerHttpClient") public CloseableHttpClient limsHttpClient() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException { int TIME_OUT = 30 * 1000; PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager( RegistryBuilder.<ConnectionSocketFactory> create().register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", getSSLSocketFactory()).build()); connectionManager.setMaxTotal(100); RequestConfig config = RequestConfig.custom().setConnectTimeout(TIME_OUT).setConnectionRequestTimeout( TIME_OUT).setSocketTimeout(TIME_OUT).build(); CloseableHttpClient httpClient = HttpClientBuilder.create().setConnectionManager( connectionManager).setDefaultRequestConfig(config).build(); return httpClient; }
위와 같이 설정 후 실제 서비스에서는 아래와 같이 불러와 사용하였다.
@Autowired @Qualifier("customerHttpClient") private CloseableHttpClient limsHttpClient;
여기서 해당 인증서를 무시해주는 부분은 아래 부분이 동작해주고 있다.
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) {} public void checkServerTrusted(X509Certificate[] certs, String authType) {} }};
해당 처리 방법은 보안 이슈가 발생 할 수 있으므로, 모든 해결 방안에는 해당되지 않을 것 같다.
반응형'Java' 카테고리의 다른 글
[JAVA] 오라클 rowid 직렬화 오류 (0) 2024.03.13 [Java] Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection (0) 2024.02.21 [JAVA] Class 파일 decompile (0) 2021.08.11 [JAVA] 2차원 배열 정렬 Arrays.sort (0) 2021.04.23 [Java] Integer와 int의 차이 (0) 2021.04.21 다음글이 없습니다.이전글이 없습니다.댓글