2014-06-17 3 views
3

인증을 위해 웹 서버와 통신하고 서버에서 데이터를 가져 오는 안드로이드 애플리케이션을 만들고 있습니다. 서버에서 자체 서명 된 인증서를 사용하는 통신에 HTTPS/SSL을 사용하고 있으며 해당 인증서를 Android 앱에서 사용할 수 있습니다. 이 방법으로 나는 올바른 서버와 통신하고 있다고 확신합니다. 그러나 서버가 올바른 클라이언트로부터 요청을 받고 있는지 확인하는 방법.안드로이드 앱과 서버 간의 클라이언트 서버 통신

브라우저에서 http 요청을 스푸핑하여 서버로 보내려면 어떻게해야합니까?

서버에서 안드로이드 응용 프로그램의 요청 여부를 어떻게 알 수 있습니까? 서버가 모바일 응용 프로그램에서만 요청을 처리하지 못하도록 제한 할 수있는 방법이 있습니까?

답변

2

그건 복잡한 문제입니다.

서버에서 인식 한 CA가 서명 한 개인 인증서와 해당 공용 인증서를 가질 수 있습니다 (해당 키 저장소에 CA 공개 인증서를 추가하기 만하면 됨). 해당 솔루션의 주된 복잡성은 다음과 같습니다. - 누군가 인증서를 훔쳐 다른 장치에서 사용할 수 있습니다 (이 문제가 응용 프로그램에서는 무시할 수 있다면이 솔루션은 정상입니다). - 인증서 배포 및 만료 : 솔루션 필요 부트 스트랩, 인증서 배포 및 인증서 만료 전에 작업.

다른 솔루션에는 장치 ID가 포함될 수 있으며이를위한 일부 공급자가 있으며 일회용 암호를 사용할 수 있습니다.

+0

고맙습니다. Rodolk. 그것은 매우 도움이되었습니다. 이전 질문으로 계속하십시오. 브라우저를 통해 주요 질문에서 언급 한 웹 서버에 연결하려고하는데 http로 연결할 수 있지만 https로 연결하려고하면 서버가 연결을 종료합니다. 내 이해는 자체 서명 된 SSL 인증서가 서버에 설치되어 있으므로 서버는 인증서를 보내야하고 브라우저는 신뢰할 수없는 인증서 창이 나타나야합니다. 서버에서 클라이언트 인증이 일어나지 않으므로 서버가 연결을 종료해야하는 이유는 무엇입니까? 내가 틀렸다면 수정하십시오. – Prabhuraj

+0

@Prabhuraj, 대답이 유용했기 때문에 기쁩니다. 너가 그것을 표를 할 수 있으면, 나는 그것을 평가할 것이다. 서버가 연결을 닫는 다음 문제에 관해서는 다른 문제로 인한 것일 수 있습니다. 서버에서 Wireshark를 실행하고 SSL 핸드 셰이크를 사용하여 스니핑 파일을 전달하면 도움을 드릴 수 있습니다. 어쩌면 다른 질문에서 그것을 처리하는 것이 가장 좋습니다. 그래서 다른 사람들이 우리의 작업에서 이익을 얻을 수 있고 주석 스레드를 따를 필요가 없습니다. – rodolk

+0

확실한 Rodolk. 고맙습니다 . – Prabhuraj