HTTPS 프록시의 핵심, CONNECT 메서드란?
회사 네트워크나 프록시 환경에서 HTTPS 요청을 보내다 보면
CONNECT라는 HTTP 메서드를 마주치게 됩니다.
GET, POST와는 다르게 CONNECT는 API 호출용이 아니라
“터널을 만들기 위한 메서드” 라는 점에서 성격이 완전히 다릅니다.
이 글에서는 CONNECT 메서드의 역할과 동작 원리,
그리고 HTTPS 프록시에서 왜 필수인지를 정리해 보겠습니다.

────────────────────────────
CONNECT 메서드가 필요한 이유
────────────────────────────
HTTPS는 통신 내용이 TLS로 암호화되어 있기 때문에
중간에 있는 프록시 서버가 내용을 해석할 수 없습니다.
하지만 프록시는 다음과 같은 역할은 해줘야 합니다.
외부 서버(example.com:443)로 연결은 대신 열어주기
실제 암호화 통신은 클라이언트와 서버가 직접 수행
즉, 프록시는
“HTTP 요청을 처리하는 서버”가 아니라
“TCP 통로만 만들어주는 중계자”가 됩니다.
이때 사용하는 메서드가 바로 CONNECT입니다.
────────────────────────────
CONNECT의 기본 동작 방식
────────────────────────────
클라이언트 → 프록시
클라이언트는 프록시에게 이렇게 요청합니다.
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
의미:
“example.com의 443 포트로 TCP 연결을 하나 만들어줘”
프록시 → 클라이언트
프록시가 연결을 허용하면 아래 응답을 보냅니다.
HTTP/1.1 200 Connection Established
여기까지는 HTTP 통신입니다.
이후부터는 HTTP가 아님
200 응답 이후부터는
클라이언트와 서버 간의 순수 TCP 바이트 스트림이 흐릅니다.
이 터널을 통해 클라이언트는
TLS 핸드셰이크(ClientHello 등)를 직접 수행합니다.
즉,
CONNECT는 “요청 자체”가 목적이 아니라
연결을 성립시키는 데까지만 역할을 합니다.
────────────────────────────
CONNECT와 HTTPS의 관계
────────────────────────────
CONNECT가 없으면 HTTPS 프록시는 사실상 불가능합니다.
GET / POST → HTTP 메시지를 프록시가 해석해야 함
HTTPS → 암호화되어 있어서 프록시가 해석 불가
CONNECT → 해석하지 않고 “통로만 제공”
그래서 HTTPS 프록시는 항상 CONNECT를 사용합니다.
요약하면:
HTTP 프록시 → GET, POST 그대로 중계 가능
HTTPS 프록시 → CONNECT로 터널 생성 후 TLS 통과
────────────────────────────
프록시는 무엇을 알고 무엇을 모를까?
────────────────────────────
일반적인 CONNECT 터널 기준으로 프록시는 다음만 알 수 있습니다.
프록시가 아는 정보
목적지 호스트(example.com)
포트(443)
연결 시간
트래픽 양
프록시가 모르는 정보
URL 경로(/login, /api 등)
HTTP 헤더
요청/응답 Body
즉, 내용은 전혀 볼 수 없습니다.
────────────────────────────
SSL Inspection(중간자 공격) 프록시의 경우
────────────────────────────
회사나 기관에서 사용하는 보안 프록시는
HTTPS 내용을 검사해야 하는 경우가 있습니다.
이 경우 프록시는 다음과 같이 동작합니다.
클라이언트 ↔ 프록시 : TLS 연결 1개
프록시 ↔ 실제 서버 : TLS 연결 1개
프록시가 중간에서 암호화를 한 번 해제했다가
다시 암호화하는 구조입니다.
이 방식이 가능하려면
클라이언트 PC에 “회사 CA 인증서”가 설치되어 있어야 합니다.
이걸 흔히
SSL Inspection, HTTPS Interception 이라고 부릅니다.
────────────────────────────
CONNECT 사용 시 자주 발생하는 문제들
────────────────────────────
407 Proxy Authentication Required
프록시 인증(ID/PW)이 필요한 경우
Proxy-Authorization 헤더 필요
403 / 502 에러
특정 도메인이나 포트에 대한 CONNECT 차단
회사 방화벽 정책 문제
200 Connection Established 이후 멈춤
CONNECT는 성공했지만 TLS 핸드셰이크 실패
인증서, TLS 버전, SNI 차단 문제 가능성
타임아웃
CONNECT 타임아웃과
터널 이후 HTTPS 타임아웃은 별개로 관리해야 함
'IT > Server' 카테고리의 다른 글
| Bitbucket 전용 SSH Key 생성 & 설정 방법 (기존 키 유지) (0) | 2026.01.10 |
|---|---|
| 왜 Forward Proxy / Reverse Proxy라고 부를까? (0) | 2025.12.25 |
| HTTP 메서드 정리: GET, POST 말고도 뭐가 있을까? (0) | 2025.12.25 |
| Cache-Control: public, max-age, s-maxage, immutable 완벽 정리 (0) | 2025.12.05 |
| Tailscale을 이용한 라즈베리파이 원격 접속 설정 방법 (0) | 2025.03.11 |