Windows에서 Charles Web Proxy 및 최신 Android 에뮬레이터를 사용하여 SSL 인증서를 구성하는 방법은 무엇입니까?
Charles 웹 프록시를 사용하여 Windows에서 Android 에뮬레이터로 작업하고 싶습니다. charles를 성공적으로 설정하고 명령 줄로 에뮬레이터를 시작했습니다.
emulator -http-proxy 127.0.0.1:8888 @NexusOne
Charles의 Android 에뮬레이터에서 오는 트래픽을 볼 수 있지만 문제는 SSL을 사용하는 라이브 API에 대해 개발 중이며 전송되는 데이터에 대해 재생하도록 Charles를 구성하는 방법을 잘 모르겠다는 것입니다. 받았습니다. Charles에서 SSL이 설정된 두 영역 (프록시-> 프록시 설정-> SSL 및 프록시-> 클라이언트 SSL 인증서)을 알고 있지만 원하는 작업을 수행 할 수있는 적절한 문서를 찾을 수 없습니다. . Charles 또는 일반적으로 인증서를 사용해 본 경험이 있으며이를 달성하는 방법을 설명 할 수 있습니다. 이것이 왜 그렇게 어려운지에 대한 지식이 부족한 것처럼 보이므로 인증서에 대한 입문서도 좋을 것입니다.
Charles에서 Proxy >> Proxy Settings로 이동하여 SSL 탭을 선택합니다. 위치 목록에 호스트를 추가하십시오.
예를 들어 보안 통화가 https://secure.example.com 으로 이동하는 경우 secure.example.com 또는 * .example.com을 입력 할 수 있습니다.
위의 설정이 완료되면 Charles 기본 창에서 호출을 마우스 오른쪽 버튼으로 클릭하고 SSL 프록시 옵션을 선택해야 할 수 있습니다.
도움이 되었기를 바랍니다.
charles를 사용하여 http 또는 https 트래픽을 원격으로 캡처하려면 다음을 수행해야합니다.
HOST-Charles를 실행하고 프록시 클라이언트를 호스팅하는 컴퓨터 – 캡처 할 트래픽을 생성하는 사용자의 컴퓨터
호스트 머신
- 정식 라이센스가있는 Charles 버전 설치
- 프록시-> 프록시 설정-> "투명한 HTTP 프록시 사용"을 선택합니다.
- 프록시-> SSL 프록시 설정-> "SSL 프록시 활성화"확인
- 프록시-> SSL 프록시 설정-> 추가 버튼을 클릭하고 두 필드에 *를 입력합니다.
- 프록시-> 액세스 제어 설정-> 로컬 서브넷 (예 : 192.168.2.0/24)을 추가하여 로컬 네트워크의 모든 시스템이 다른 시스템의 프록시를 사용하도록 인증합니다.
- charles에서 "자동 저장 도구"를 설정하는 것이 좋습니다. 이렇게하면 charles 로그가 자동으로 저장되고 회전됩니다.
클라이언트 컴퓨터 :
- charles SSL 인증서 http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/를 설치하고 영구적으로 수락 / 신뢰합니다
. - charles가 프록시를 호스팅하는 소켓을 사용하도록 IE, Firefox 및 Chrome을 구성합니다 (예 : 192.168.1.100:8888).
이것을 테스트했을 때 Facebook HTTPS 채팅의 두 줄을 선택했습니다 (하나는 누군가에게, 다른 하나는 FROM).
다음을 사용하여 에뮬레이터를 시작하면 이러한 방식으로 Android 에뮬레이터 트래픽을 캡처 할 수도 있습니다.
emulator -avd <avd name> -http-proxy http://local_ip:8888/
여기서 LOCAL_IP는 에뮬레이션 된 전화의 IP 주소 인 127.0.0.1이 아니라 컴퓨터의 IP 주소입니다.
출처 : http://brakertech.com/capture-https-traffic-remotely-with-charles/
여기에서 가치있는 것은 Android 기기에서이 작업을 수행하는 단계별 지침입니다. iOS에서도 동일해야합니다.
- Charles 열기
- 프록시> 프록시 설정> SSL로 이동합니다.
- "SSL 프록시 활성화"를 선택합니다.
- "위치 추가"를 선택하고 호스트 이름과 포트를 입력합니다 (필요한 경우).
- 확인을 클릭하고 옵션이 선택되어 있는지 확인하십시오
- 여기에서 Charles 인증서 다운로드 : Charles 인증서>
- 해당 파일을 이메일로 자신에게 보냅니다.
- 장치에서 이메일을 열고 인증서를 선택하십시오.
- "인증서 이름 지정"에서 원하는 것을 입력하십시오.
- 확인을 클릭하면 인증서가 설치되었다는 메시지가 표시됩니다.
그러면 Charles에서 SSL 파일을 볼 수 있습니다. 값을 가로 채서 변경하려면 정말 멋진 "Map Local"도구를 사용할 수 있습니다.
- Charles에서 도구> 로컬지도로 이동합니다.
- "항목 추가"를 선택하십시오.
- 바꿀 파일의 값을 입력하십시오.
- "로컬 경로"에서 대신 앱이로드 할 파일을 선택하십시오.
- 확인 클릭
- 항목이 선택되었는지 확인하고 확인을 클릭하십시오.
- 앱 실행
- 라이브 파일 대신 파일이로드되는 것을 "Notes"에서 볼 수 있습니다.
Charles가 HTTPS 프록시를 제공하는 방식이 약간 변경되었습니다.
먼저 인증서 설치 옵션이 도움말 메뉴로 이동되었습니다.
Help -> SSL Proxying -> Install Charles Root Certificate
Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators
둘째, iOS 9부터는 NSAppTransportSecurity
옵션을 제공해야하며 Info.plist
Charles가 중간에있는 사람으로 제대로 작동하도록하려면 다음을 추가해야합니다.
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
도메인의 일부로 전체 예를 참조하십시오.
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
이유는 Charles가 중간 https 서버에서 남자 역할을 한 후 어느 시점에서 명확한 http로 통신하기 때문입니다.
마지막 단계는 Charles에서이 도메인에 대해 SSL 프록시를 활성화하는 것입니다 (도메인을 마우스 오른쪽 단추로 클릭하고 SSL 프록시 사용을 선택하십시오).
나를 위해 일한 것-실제로 iPhone으로 옮겨야합니다.
Charles
- 투명한 HTTP 프록시 사용
- SSL 프록시 활성화
- 들어오는 요청을 마우스 오른쪽 버튼으로 클릭하고 SSL 프록시를 선택하십시오.
맥
- Charles CA 인증서 번들 http://www.charlesproxy.com/ssl.zip 다운로드
- 자신에게 이메일 charles-proxy-ssl-proxying-certificate.crt
아이폰
- 포트 8888에서 Charles에 대한 http 프록시 사용
- 이메일 첨부 파일을 선택하고 설치하십시오. 그렇습니다!
이제 SSL 프록시에 추가 된 도메인에서 암호화 된 트래픽을 볼 수 있습니다.
Charles Help 메뉴에서 "Install Charles CA SSL Certificates .."를 클릭해야합니다. http://blog.noodlewerk.com/general/tutorial-using-charles-proxy-to-debug-https-communication-between-server-and-ios-apps/ 에서 자세한 지침을 참조하십시오.
이러한 것들이 나를 도왔습니다
- 프록시-> SSL 프록시 설정-> 추가로 이동하십시오.
- 여기에 사이트 이름을 추가하고 포트 번호를 8888로 지정하십시오.
이것이 누군가를 돕기를 바랍니다.
'development' 카테고리의 다른 글
오류 : com.google.gms : google-services : 1.0을 찾을 수 없습니다. (0) | 2020.12.06 |
---|---|
'내부'보호 수준으로 인해 이니셜 라이저에 액세스 할 수 없습니다. (0) | 2020.12.06 |
Django 모델의 필드를 업데이트하기 위해 사전을 어떻게 사용합니까? (0) | 2020.12.06 |
선택한 명명 된 인수를 Jinja2의 include 컨텍스트에 전달하는 방법은 무엇입니까? (0) | 2020.12.06 |
Javascript에서 True-> 1 및 False-> 0을 변환 하시겠습니까? (0) | 2020.12.06 |