본문 바로가기

Development/Xamarin

Xamarin ERROR java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 발생시 처리방법

JSON파일을 url로 호출하여 수신하는데 아래와 같은 오류 발생

ERROR java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

 

검색해 보니 현재 요청한 https의 SSL 인증서를 신뢰할 수 없거나 찾을 수 없다는 오류로 해당 CA 인증서를 앱에 직접 등록하거나 자신이 임시로 만든 인증서라면 신뢰할 수 있는 인증서로 교체하여야 하는데 둘다 나중에 인증서를 갱신해야 하는 문제가 있고 내가 발급받은 와일드카드 SSL 인증서가 인식되지 않는 경우가 있다는 글을 봐서 원래 임시로 해야 하는 조치중 인증서 Validation체크를 무조건 True로 하도록 하는 방법으로 일단 처리하기로 한다.

 

1. 먼저 아래의 코드를 수정한다.

원래 해당 URL 에서 JSON 파일을 가져올 HttpClient 객체를 그냥 생성하던 코드 아래의 코드를 인증서 Validation체크 무시하는 코드로 변경 한다.

//수정 전 코드
public const string GitHubReposEndpoint = "https://aaa.bbb.co.kr:3000/getUserData";//JSON을 가져올 URL 주소
HttpClient _client;

public MainPage()
{
	_client = new HttpClient();
    
    InitializeComponent();
}

 

//수정 후 코드
public const string GitHubReposEndpoint = "https://aaa.bbb.co.kr:3000/getUserData";//JSON을 가져올 URL 주소
HttpClient _client;

public MainPage()
{
	var httpHandler = new HttpClientHandler { ServerCertificateCustomValidationCallback = (o, cert, chain, errors) => true };
	_client = new HttpClient(httpHandler);
    
    InitializeComponent();
}

 

HttpClientHandler를 새로 만들어서 ServerCertificateCustomValidationCallback을 무조건 true로 리턴하도록 처리함.