티스토리 뷰
IT/Android
[Android]Trust anchor for certification path not found 이슈 해결 하기
Kanzler 2021. 8. 27. 14:07Retrofit을 이용해 http 통신을 하던 중 "java.security.cert.CertPathValidatorException: Trust anchor for certification path not found." 에러가 발생 하였다.
해당 에러는 https 인증서가 만료 되거나 인증되지 않은 인증서를 사용 한 경우 발생 한다.
아래와 같이 OkHttpClient 사용을 수정 하였다.
문제 발생 코드
OkHttpClient client = new OkHttpClient();
문제 해결 코드
해결 class를 하나 만들고 사용
public class TrustOkHttpClientUtil {
public static OkHttpClient.Builder getUnsafeOkHttpClient() {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}
};
// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
return builder;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
OkHttpClient client = TrustOkHttpClientUtil.getUnsafeOkHttpClient().build();
'IT > Android' 카테고리의 다른 글
[Android] Retrofit2에서 connectTimeout,readTimeout,writeTimeout 설정하기 (0) | 2021.08.30 |
---|---|
[Android]앱 예약 배포 하기 (0) | 2021.08.27 |
[Android]"앱이 설치되지 않았습니다.(android app not installed)" 에러 해결방법 (0) | 2020.10.15 |
[Android] 코드로 weight 수정 하기 (0) | 2019.04.12 |
[Android]fragment에서 onRequestPermissionsResult이 호출 되지 않을 때 (0) | 2019.04.12 |
댓글
TAG
- 국기 다는 시간
- 포아너
- 오픈베타
- GPU 출시가격
- GPU 출시
- 민주당 대선 후보
- JSON PASER
- unbound prefix
- 블로그 개설
- 1800X
- 한글패치
- 투표소
- 한글 패치
- 라이젠
- 단면폭
- 19대 선거
- 다렉
- 하이엔드 그래픽카드
- 래디어 구조
- 1800TI
- 7700K
- 예약메일 전송
- 초대장
- 사제 쿨러
- ONLINE JSON
- Looper.prepare()
- 테일즈 오브 베르세리아
- 배달 지연
- 티스토리 초대장
- 림의 외경
최근에 올라온 글
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
공지사항