크롬 엔진을 사용하는 환경에서 현재 도메인에서 다른 도메인으로 이동하거나 데이터를 송수신 할 때 이동하는 URL이 부모 URL과 상이하여 하기와 같은 오류 팝업 메시지를 보게 된다.
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException |
이 오류 메시지의 원인은 SSL 인증서 적용이 안되었거나, 코딩에 SSL 송수신 루틴을 추가해주지 않아서 그런다.
추가 방법은 앞서 썼던 글을 가면 자세히 볼 수 있다.
이동하기 ☞https://baekyle.tistory.com/5
해당 오류는 즉 구글 리캡챠(reCAPTCHA), API 데이터 송수신 관련 오류로 인증서 오류이다.
RestTemplate 클래스의 postForObject 메소드를 단순히 사용하는 방식으로는 인증할 수 없다.
이를 처리하기 위해 하기의 루틴을 추가해줘야 한다.
1. 요약
1.1 라이브러리 추가
1.2 인증서 추가
1.3 코드 추가
2. 라이브러리 추가
- 하기의 라이브러리를 추가해준다.
httpclient-x.x.x.jar |
httpcore-x.x.x.jar |
3. jks 확장자 인증서 발급받고 라이브러리처럼 솔루션에 이식
- 돈을 받고 사던지 무료로 받던지 해서 jks 인증서를 발급받는다.
4. 하기 코딩 추가
ClassPathResource resource = new ClassPathResource("jks확장자 파일명");
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
String keyStorePassword = "jks 확장자 암호";
keyStore.load(new FileInputStream(resource.getFile()), keyStorePassword.toCharArray());
SSLContext sslcontext = SSLContexts.custom()
.useProtocol("SSL")
.loadTrustMaterial(null, new TrustStrategy() {
@Override
public boolean isTrusted(X509Certificate[] paramArrayOfX509Certificate, String paramString) {
return true;
}
}).loadKeyMaterial(keyStore, keyStorePassword.toCharArray())
.build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
상기 코드를 추가하고, 마지막으로 RestTemplate 클래스를 선전해줘서 rest 통신을 진행하면 정상적으로 될 것이다.
잘 이해가 안된다면 맨 위에 있는 링크로 이동해서 더 자세히 보면 된다.
'Stack Overflow > 스프링' 카테고리의 다른 글
[스프링] 체크박스 한번에 모든 것을 disabled 구분하면서 선택, 해제하기 (4) | 2022.01.29 |
---|---|
[스프링] JSTL에서 날짜 Date 추출 및 일자 연산 코드 (4) | 2022.01.15 |
[스프링] POST로 팝업 윈도우 창 데이터 값 전달하면서 새로 생성하기 (257) | 2022.01.09 |
[이클립스] error occured processing xml content is not allowed in prolog 관련 에러 (923) | 2022.01.08 |
[이클립스] no setter found for property [BLABLA] in class 관련 대응 (4) | 2022.01.07 |
댓글