하이브리드앱(안드로이드) 신뢰할수없는 ssl 적용관련
- 작성자 :
- 오*석
- 작성일 :
- 2014-05-30 10:49:49
- 조회수 :
- 1,581
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
현재 하이브리드 앱 (안드로이드)에서 서버에서 데이터 받을때 EgovInterfacePlugin에서 제공하는 소스를 사용중인데
- > http://asd.com/data.do 이런형태로는 아무이상 없이 데이터를 받을수 있는데
-> https://asd.com/data.do 인 형태이고 적용된 ssl은 신뢰할수없는 인증서로 등록이 되어있는 상태 인데 신뢰할수 없는 인증서이지만 소스가
오류 없이 돌아 갈 수 있는 방법을 알고 싶습니다.
그리고 전체 EgovInterfacePlugin.java는 파일로 첨부하였으면 그중 오류나는 일부분과 오류 내용을 표시해두었습니다.
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
HttpEntity<String> requestEntity = new HttpEntity<String>(
parseParameter(param), requestHeaders);
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();
// Add the String message converter
restTemplate.getMessageConverters().add(
new StringHttpMessageConverter());
// Make the HTTP POST request, marshaling the response to a
// String
//================== 에러 나는 부분=======================================================
ResponseEntity<String> responseEntity = restTemplate.exchange(url + uri, HttpMethod.POST, requestEntity, String.class);
//================== 에러 나는 부분=======================================================
//==================에러 내용 ===========================================================
i/o error java.security.cert.CertPathvalidator Exception: Trut Anchor for certifcation path not found.;
nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidator
Exception: Trust anchor for certification path not found
//====================================================================================
String result = responseEntity.getBody();
pluginResult = new PluginResult(PluginResult.Status.OK, result);
pluginResult.setKeepCallback(true);
} catch (RestClientException e) {
- > http://asd.com/data.do 이런형태로는 아무이상 없이 데이터를 받을수 있는데
-> https://asd.com/data.do 인 형태이고 적용된 ssl은 신뢰할수없는 인증서로 등록이 되어있는 상태 인데 신뢰할수 없는 인증서이지만 소스가
오류 없이 돌아 갈 수 있는 방법을 알고 싶습니다.
그리고 전체 EgovInterfacePlugin.java는 파일로 첨부하였으면 그중 오류나는 일부분과 오류 내용을 표시해두었습니다.
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
HttpEntity<String> requestEntity = new HttpEntity<String>(
parseParameter(param), requestHeaders);
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();
// Add the String message converter
restTemplate.getMessageConverters().add(
new StringHttpMessageConverter());
// Make the HTTP POST request, marshaling the response to a
// String
//================== 에러 나는 부분=======================================================
ResponseEntity<String> responseEntity = restTemplate.exchange(url + uri, HttpMethod.POST, requestEntity, String.class);
//================== 에러 나는 부분=======================================================
//==================에러 내용 ===========================================================
i/o error java.security.cert.CertPathvalidator Exception: Trut Anchor for certifcation path not found.;
nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidator
Exception: Trust anchor for certification path not found
//====================================================================================
String result = responseEntity.getBody();
pluginResult = new PluginResult(PluginResult.Status.OK, result);
pluginResult.setKeepCallback(true);
} catch (RestClientException e) {
A
안녕하세요. 오환석님.
하이브리드 앱에서의 플러그인은 네이티브 코드(안드로이드 경우는 자바 언어)로 구현 된 코드를 자바스크립트로 호출하는 형태입니다.
전자정부 표준프레임워크의 EgovInterfacePlugin도 마찬 가지로 libs 폴더에 있는 spring for android 의 rest 통신 모듈을 호출하여
서버와 http 기반의 rest 통신을 하고 있습니다.
질문에서 문의 주신 에러 코드는 서버측이 가지고 있는 인증서가 자체서명된 루트인증서이며,
타사에 의해 검증되지 않았기 때문에 보안인증서에 문제가 있다고 해서 뜨는것 으로 소스 자체가 오류없이 돌아가기 위해서는
인증 과정을 무시하고 서버 내용을 받는등의 추가 코딩이 필요합니다.
다시 정리해서 말씀 드리면, 별도로 android 기반의 https 통신 모듈을 구현하신 후 프러그인 방식으로 추가 하신 후,
그 과정에서 인증 과정을 무시하시는 설정을 추가하여 테스트를 진행 하셔야 원하시는 결과를 얻으실 수 있을것 같습니다.
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.
하이브리드 앱에서의 플러그인은 네이티브 코드(안드로이드 경우는 자바 언어)로 구현 된 코드를 자바스크립트로 호출하는 형태입니다.
전자정부 표준프레임워크의 EgovInterfacePlugin도 마찬 가지로 libs 폴더에 있는 spring for android 의 rest 통신 모듈을 호출하여
서버와 http 기반의 rest 통신을 하고 있습니다.
질문에서 문의 주신 에러 코드는 서버측이 가지고 있는 인증서가 자체서명된 루트인증서이며,
타사에 의해 검증되지 않았기 때문에 보안인증서에 문제가 있다고 해서 뜨는것 으로 소스 자체가 오류없이 돌아가기 위해서는
인증 과정을 무시하고 서버 내용을 받는등의 추가 코딩이 필요합니다.
다시 정리해서 말씀 드리면, 별도로 android 기반의 https 통신 모듈을 구현하신 후 프러그인 방식으로 추가 하신 후,
그 과정에서 인증 과정을 무시하시는 설정을 추가하여 테스트를 진행 하셔야 원하시는 결과를 얻으실 수 있을것 같습니다.
그럼 오늘도 좋은하루 보내시기 바랍니다.
감사합니다.