HTTPS 요청/응답의 SSL 오류
Proxyman에서 "SSL Handshake Failed" 및 기타 SSL 오류를 해결하세요. Proxyman 인증서가 설치되어 있고 신뢰되는지 확인하고, SSL pinning이 원인인지 배제하세요.
1. 문제
- Proxyman 앱에서 HTTPS 트래픽이 보이지 않습니다.
- HTTPS 요청과 응답에서 SSL 오류가 발생합니다.
- Response 패널에 SSL Handshake Failed 또는 Possible Certificate Pinning이 표시됩니다.
2. 해결 방법
SSL 핸드셰이크 실패의 원인은 여러 가지입니다. 아래 단계를 따라가며 문제를 찾아보세요.
2.1 모바일 기기
iOS 기기
- iOS 설정 가이드를 따르세요 -> 기기에 Proxyman CA 인증서를 설치하고 신뢰했는지 확인하세요.
- 인기 앱(예: Facebook, Instagram, Apple, WhatsApp 등)을 가로채는 경우: 해당 앱은 SSL pinning으로 보호되어 있어 가로챌 수 없습니다.
- iOS 앱이 SSL pinning을 사용하지 않는지 확인하세요. 사용한다면 비활성화하세요.
iOS 시뮬레이터
iOS 시뮬레이터 설정 가이드를 따르세요 -> 시뮬레이터에 Proxyman CA 인증서를 설치하고 신뢰했는지 확인하세요.
Android 기기
- Android 기기 설정 가이드를 따르세요 -> 기기에 Proxyman CA 인증서를 설치하고 신뢰했는지 확인하세요.
- 5단계가 완료되었는지 확인하세요(도메인을 res/xml/network_security_config.xml과 AndroidManifest.xml 두 파일에 추가합니다).
- 소유하지 않은 Android 앱을 가로채려는 경우 -> 가로챌 수 없습니다 -> ❌
Android 에뮬레이터
- Android 에뮬레이터 설정 가이드를 따르세요 -> 에뮬레이터에 Proxyman CA 인증서를 설치하고 신뢰했는지 확인하세요.
- 5단계가 완료되었는지 확인하세요(도메인을 res/xml/network_security_config.xml과 AndroidManifest.xml 두 파일에 추가합니다).
- 소유하지 않은 Android 앱을 가로채려는 경우 -> 가로챌 수 없습니다 -> ❌
React Native 앱
- 앱이 React Native 앱이라면 React Native 가이드를 따르세요.
Flutter
- Flutter 설정 가이드를 따르세요.
위의 모든 단계를 시도하고 확인했는데도 SSL 오류가 발생하나요?
https://google.com 에서 오류 없이 HTTPS 요청/응답을 볼 수 있는지 확인하기
- 기기를 준비합니다.
- 웹 브라우저를 엽니다(iOS에서는 Safari, Android에서는 Google Chrome).
- https://google.com 에 접속합니다.
- macOS용 Proxyman에서 요청을 우클릭하고 이 도메인에 대해 Enable SSL Proxying을 선택합니다. 그런 다음 페이지를 새로 고칩니다.
- HTTPS 응답이 보이는지 확인합니다.
✅ 성공
- https://google.com 의 HTTPS 응답이 보인다면 인증서를 올바르게 설정한 것입니다 ✅
- 문제는 앱에 있을 수 있습니다. 도메인이나 앱으로 다시 시도하세요 -> SSL 오류가 여전히 발생한다면 앱이 SSL pinning으로 보호되고 있을 가능성이 높습니다.
- SSL pinning 문제가 아니라고 생각된다면 GitHub에 이슈를 등록하세요(기기, OS 버전, 앱 이름 등을 함께 알려주세요).
❌ 실패
- 기기에 Proxyman 인증서가 제대로 설치되었거나 신뢰되지 않았을 가능성이 높습니다. 2.1 모바일 기기 섹션으로 돌아가 다시 따라 하세요.
- 모든 단계를 마쳤는데도 SSL 오류가 계속 발생한다면 GitHub에 이슈를 등록하세요(기기, OS 버전, 앱 이름 등을 함께 알려주세요).
2.2 MacBook 또는 Windows PC
다음 환경에서 SSL 오류가 발생하는 경우:
- Mac (MacBook, Mac mini, Mac Studio) -> Mac에 인증서를 설치하고 신뢰하세요 -> macOS 가이드를 따르세요
- Windows -> Windows 기기에 인증서를 설치하고 신뢰하세요 -> Windows 가이드를 따르세요
- Java -> Java VM 가이드를 따르세요
- Firefox -> Firefox 가이드를 따르세요
- Python -> Python 가이드를 따르세요
- Ruby -> Ruby 가이드를 따르세요
일부 네트워킹 라이브러리(Ruby, NodeJS, Python, Golang)는 기본적으로 자체 서명 인증서를 신뢰하지 않습니다. 라이브러리가 인증서를 신뢰하도록 직접 설정해야 합니다.
=> 해결하려면 Automatic Setup을 사용하세요. Setup -> Automatic Setup… -> **Open New Terminal…**을 열고, 그 터미널에서 스크립트를 실행하세요. 지원되는 NodeJS, Python, Ruby, Golang 라이브러리의 인증서 신뢰를 자동으로 설정합니다. 다른 라이브러리는 **"<Your framework/library> self-signed certificate"**를 검색하세요.
2.3 SSL Pinning인가요?
- 앱에서 여전히 HTTPS 응답을 볼 수 없다면, 앱이 SSL pinning으로 보호되고 있을 가능성이 높습니다. SSL pinning은 MitM 도구가 콘텐츠를 보지 못하도록 막습니다. Facebook, Apple, Instagram, Messenger 등 대부분의 인기 앱이 이를 사용합니다.
- 앱에서 SSL pinning을 일시적으로 비활성화하고 다시 시도하세요.
SSL pinning에 대해 자세히 알아보세요: iOS에서 SSL Pinning으로 중간자 공격 막기
모든 방법을 시도했는데도 무엇이 잘못되었는지 확신이 서지 않나요? GitHub 이슈를 등록해 주세요.
함께 알려주세요: Proxyman macOS/Windows, Proxyman 버전, iOS/Android 기기 등.