일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공략
- 가사
- goblin sword
- 일상
- 아이패드
- 감상
- 핑크
- 시사회
- Monument
- 후기
- 게임
- Pink
- 카이로소프트
- JavaScript
- 아이폰게임
- 강추
- 레고
- 아이러브니키
- 맛집
- 추천
- 아이폰
- 모뉴먼트 밸리
- 영화
- Monument Valley
- great forest
- php
- 유료
- 모뉴먼트
- 잡담
- jQuery
- Today
- Total
잡담소장소
[java] PKIX path building failed 본문
https 이미지를 RestTemplate을 통해서 읽어오려고 하니 발생한 에러
www.lesstif.com/system-admin/java-validatorexception-keystore-ssl-tls-import-12451848.html
Java 에서 ValidatorException 등 인증서 관련 에러 해결 - keystore에 SSL/TLS 인증서를 import 하기
-----BEGIN CERTIFICATE----- MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw MDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJB
www.lesstif.com
해결방법을 검색해보니
1. 모든 인증서를 신뢰하기
2. 필요한 인증서 추가
위와 같은 방법들이 있었고 1번은 지양했다
JAVA PKIX path building failed - 가리사니
``` java javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid ce...
gs.saro.me
문제가 된 곳은 외부연동쪽이다 보니 다양한 CDN 들이 들어와서 발생할때마다 일일히 예외처리할 수 없으니
1번을 하되 이미지를 가져오는 부분에다가 추가 하는 것이 좋다고 생각했다.
RestTemplate 인스턴스 생성할 때 파라메터를 받는 생성자를 하나 더 만들어서 requestFactory를 아래와 같이 return 하도록 추가했다.
public ClientHttpRequestFactory getAllTrustRequestFactory()
throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
.loadTrustMaterial(null, acceptingTrustStrategy)
.build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.build();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
return requestFactory;
}
PoolingHttpClientConnectionManager를 사용시에는 생성자에 ConnectionSocketFactoryRegistry 파라메터로 입력하여 생성한다
Ignoring SSL certificate in Apache HttpClient 4.3
How to ignore SSL certificate (trust all) for Apache HttpClient 4.3? All the answers that I have found on SO treat previous versions, and the API changed. Related: How to ignore SSL certificate ...
stackoverflow.com
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
.<ConnectionSocketFactory> create().register("https", sslsf)
.build();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(
socketFactoryRegistry);
CloseableHttpClient httpclient = HttpClients.custom()
.setConnectionManager(cm).build();
'Study ;3' 카테고리의 다른 글
[java] @Transactional 과 custom advisor 사용 시 문제 (0) | 2021.01.15 |
---|---|
[javascript] bootstrap-table export csv 문제 (0) | 2021.01.13 |
[javascript] jquery-typeahead 적용기 (0) | 2020.12.02 |
<a>의 download 속성 이슈 (0) | 2020.11.30 |
mac os k8s (0) | 2020.10.04 |