티스토리 뷰

iOS에서 host 변경 테스트를 위해 Fiddler4를 활용한 HTTPS Proxy 서버 만들기

우선 이 설정이 필요해진 상황이 구구절절하니 잠깐 설명해보자면...

현재 개발을 담당하고 있는 웹서비스는 L4 스위치에 여러 대의 서버가 바인딩되어 있으며, HTTPS 프로토콜만 지원중이다. 그런데 잘 돌아가는 이 시스템에 사용자가 늘어날 '가능성'이 포착되었고, 서버를 좀 더 투입하기로 결정했다. 그래서 기존 서버들과 동일하게 세팅한 새로운 서버를 만들기는 했는데, 바로 투입 하기에는 영 찜찜해서 테스트를 해보기로 했다. 그런데 PC에서의 테스트야 적당히 해보면 되지만 모바일에서의 테스트가 쉽지 않았다. hosts 파일을 수정해서 원 도메인에 대한 요청을 신규 서버로 가도록 만들어보려는데 iOS에서는 host설정이 불가능했다. 그래서 찾은 방법이 Fiddler4였다.

모바일기기에서의 호스트 변조 테스트를 해보기 위해서는, host 설정을 변경하기 쉬운 PC를 프록시 서버로 활용하는 것이 가장 무난하다.(사실 다른 방법을 잘 모른다) Fiddler4에서는 기본적으로 HTTP 프로토콜에 대한 proxy 기능을 내장하고 있으며, HTTPS인 경우에도 별도 애드온을 설치하면 proxing이 가능하다. 모든 과정은 Fiddler를 만든 telerik 홈페이지에 잘 나와 있다. 이곳을 참고하면 모든 설정이 가능하다. Fiddler4 라고 굳이 버전명을 표기한 이유는 Fiddler2에서는 설정 화면이 미세하게(!) 다르기 때문이다.

참고로 이 설정을 하면 PC의 브라우저가 비정상적으로 동작할 수 있다. 모바일 테스트가 완료되면 Fiddler의 설정을 다시 off 시키자.

Fiddler4에서 iOS 기기의 HTTP(S) 트래픽을 받을 수 있도록 설정하기

  • Tools > Fiddler Options > Connections를 클릭한다.
  • 'Allow remote computers to connect' 옵션을 체크한다.
  • Fiddler를 종료 후 다시 실행한다.
  • 혹시 방화벽이 Fiddler를 막으면 당연히 허용해준다.
  • Fiddler 우측 상단 'Online' 버튼에 마우스를 올려두면 Fiddler가 트래픽을 받아주는 IP가 보인다. (당연히 본인 PC의 IP이다.)
  • 자신의 PC와 동일한 네트워크에 접속되어 있는 iOS기기에서 브라우저를 통해 PC의 IP:8888 로 접속해본다. 설정이 잘되었다면 아래와 같은 화면을 볼 수 있다.

iOS 기기에서 HTTP(S) 요청을 proxy 서버로 보내도록 설정하기

  • 와이파이탭으로 들어간다. Settings > General > Network > Wi-Fi
  • PC와 동일한 네트워크에 접속하고 해당 와이파이 설정으로 들어간다.
  • 가장하단 'HTTP PROXY' 섹션에서 Manual을 선택한다.
  • Server 란에 PC의 IP를 입력하고, Port란에 8888을 입력한다. (Authentication은 Off로 둔다)
  • iOS에서는 설정 적용 버튼 따위 없다. 그냥 완료된거다.

이제 Safari 등으로 웹페이지를 접속해보면 Fiddler에서 로그가 찍히는 걸 볼 수 있을 것이다. 하지만 HTTPS도 지원하기 위해서는 아직 설정이 남았다.

스샷으로는 HTTPS 연결이 된 것으로 보이지만 미리 설정을 완료했기 때문이다. 여기까지 설정을 완료했다면 HTTP 접속만 가능하다.

iOS에서 오는 HTTPS 트래픽을 받을 수 있도록 설정하기

  • Fiddler add-ons 페이지에서 Certificate Maker plugin(CertMaker for iOS and Android)를 다운받아서 설치한다.
  • Fiddler를 재시작해준다.
  • 혹시 Fiddler root certificate를 신뢰하겠냐고 물어보면 당연히 믿어준다.
  • iOS기기에서 http://ipv4.fiddler:8888에 접속하여 FiddlerRoot certificate를 다운받는다. 잘보면 하단에 'FiddlerRoot certificate'라는 글자에 링크가 걸려있다. 클릭한다.
  • 'FiddlerRoot.cer'파일을 받게된다. 'Install' 버튼을 눌러서 설치해준다.
  • 이제 iOS기기에서 HTTPS 서비스를 제공하는 아무 페이지나 접속해보면 접속이 되는 것을 확인할 수 있을 것이다.

댓글